class NoNameInnerClass {
public static void main(String[] args) {
Outer.method().show();
PersonDemo pd = new PersonDemo();
//参数是抽象类,因为抽象类无法直接new,所以,通过匿名内部类,实例化一个子类对象
//Person p = new Person(){//重写方法体}; 这是有名字的
//new Person(){//重写方法体}; 这是匿名的子类,而且位于NoNameInnerClass类内部,所以称为匿名内部类
pd.show(new Person(){
public void show(){
System.out.println("你好啊!");
}
});
}
}
//抽象类
abstract class Person {
public abstract void show();
}
//匿名内部类:继承该类或实现接口的子类,并且实例化子类对象
//某个类中的某个方法的参数是抽象类,抽象类不能直接实例化,所以,可以通过匿名内部类实例化子类对象
class PersonDemo {
//show方法的参数是抽象类
public void show(Person p){
p.show();
}
} |
|