内部类的小练习
如下:
interface Inter{
public abstract void method();
}
class Test {
//补足代码,通过匿名内部类
}
class InnerClassDemo2 {
public static void main(String[] args){
Test.function().method(); //分析此语句的实现功能。
}
}
补足以上代码,要求使用到匿名内部类。
分析语句
Test.function().method(); //因为直接通过Test类名调用,所以Test类中有静态方法function(),function()这个方法运算后结果是一个对象,而且是一个Inter类型对象,因为只有是Inter类型的对象,才可以调用method()方法
补足后的完整代码是:
interface Inter{
public abstract void method();
}
class Test {
//补足代码,通过匿名内部类
static Inter function(){ //返回值是Inter类型的对象,当然可以是Inter类型的子类对象,这里出现了多态
return new Inter(){ //实际上new的并不是Inter类型的对象,而是Inter的子类的对象。该子类实现了Inter接口
public void method(){
System.out.println("method run");
}
};
}
}
class InnerClassDemo2 {
public static void main(String[] args){
Test.function().method();
}
}
其中:
return new Inter(){
public void method(){
System.out.println("method run");
}
};
这个可以看作一个return 语句,依然用分号结尾;
这个return 语句中含有一个匿名内部类,此匿名内部类首先实现了Inter 接口,后创建了一个此匿名内部类对象;
所以此匿名内部类是Inter接口的子类,return 语句返回的是Inter 接口的子类对象。
结果如下: