关于内部类的一个小问题,OutInterface outinter=out.doit();   这行代码是什么意思,定义一个outinter变量,给他赋值一个变量的方法,看不太懂。
还有最下面return那一行,是什么意思为什么要用return new     为什么不能直接InnerClass(“****”),看的头好晕搞不懂内部类,为什么doit()方法要用OutInterface,几个白痴问题,谢谢大佬来解答package com.lzw;
interface OutInterface{
public void f();
}
public class Interfacelnner {
public static void main(String[] args) {
// TODO 自动生成的方法存根
OuterClass2 out=new OuterClass2();
OutInterface outinter=out.doit();
outinter.f();
}
}
class OuterClass2{
private class InnerClass implements OutInterface{
InnerClass(String s){
System.out.println(s);
}
public void f() {
System.out.println("访问内部类中的方法f()");
}
}
public OutInterface doit() {;
return new InnerClass("访问内部构造方法");
}

}

解决方案 »

  1.   

    OutInterface outinter=out.doit();
    表示的是实际创建的是一个InnerClass类的对象,但是被上转型(如果还没有学到或者没有认真学这内容的话,你可以简单的理解为子类对象强制类型转化为父类)了,也就是说outinter这个变量引用实际指向的是一个InnerClass对象,但是只能访问OutInterface所具有的属性和方法,但是执行的效果是子类对象的方法,比如如果调用outinter.f(),实际输出为访问内部类中的方法f()
      

  2.   

    doit()方法返回的是OutInterface类型,然后左边是OutInterface类型,有什么问题吗?左边和右边一样你有什么好问的?
      

  3.   

    public class Interfacelnner {
    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    OuterClass2 out = new OuterClass2();
    OutInterface outinter = out.doit();
    //创建一个变量outinter,然后执行OuterClass2类(out对象)中的doit方法,
    //doit方法返回一个new InnerClass()对象,然后把这个返回的对象复制给outinter
    outinter.f();
    }
    }class OuterClass2 {
    private class InnerClass implements OutInterface {
    InnerClass(String s) {
    System.out.println(s);
    } public void f() {
    System.out.println("访问内部类中的方法f()");
    }
    } public OutInterface doit() {
    //return是返回的意思,就是上面调用这个doit方法,这个方法就会返回一个new InnerClass();
    //new InnerClass()就是创建了InnerClass这个类的一个对象
    return new InnerClass("访问内部构造方法");
    }
    }