package chp4;
public class Test2 {
public static void main(String[] args) {
Teacher t = School.getTeacher(0);
t.teach();
}
}
/*
* 匿名内部类
* 1)特殊的局部内部类
* 2)继承一个类或者实现一个接口
* 3)只会创建该类的一个对象
*
*
* 接口公开,接口的实现作为内部类隐藏起来,强制弱耦合
*/
interface Teacher{
public void teach();
}
class School{
//静态方法可以直接类名调用
public static Teacher getTeacher(int n){
class DXM_1 implements Teacher{
public void teach(){
System.out.println("dxm_1教学");
}
}
//new Teacher();是接口不能直接创建对象。new Teacher(){};花括号是一个实现类,实现Teacher接口
//创建的是实现接口的匿名内部类的对象
if(n%2==0)return new Teacher(){
public void teach(){
System.out.println("DXM_2教学");
}
};
else return new DXM_1();
}
}