return返回一个接口类型对象的理解
interface OutInterface { // 定义一个接口
public void f();
}
public class InterfaceInner {
public static void main(String args[]) {
OuterClass2 out = new OuterClass2(); // 实例化一个OuterClass2对象
// 调用doit()方法,返回一个OutInterface接口
OutInterface outinter = out.doit();
outinter.f(); // 调用f()方法
}
}
class OuterClass2 {
// 定义一个内部类实现OutInterface接口
private class InnerClass implements OutInterface {
InnerClass(String s) { // 内部类构造方法
System.out.println(s);
}
public void f() { // 实现接口中的f()方法
System.out.println("访问内部类中的f()方法");
}
}
public OutInterface doit() { // 定义一个方法,返回值类型为OutInterface接口
return new InnerClass("访问内部类构造方法");
}
}
运行结果为:
以上中return new InnerClass(“访问内部类构造方法”)一句等价于:
OutInterface a=new InnerClass(“访问内部类构造方法”);
return a;
该语句主要有三个作用:
1.调用了构造方法InnerClass(String s),所以结果会输出“访问内部类构造方法”;
2.具体化一个实力对象返回给doit------>结合第3点来解释;
3.实现由InnerClass向OutInterface类型的一个向上类型的转换,在返回给doit过程中只保留重写接口的方法f()----->因为该接口OutInterface只定义了一个方法。
完毕。