关于内部类的一个小问题,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("访问内部构造方法");
}
}
还有最下面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("访问内部构造方法");
}
}
表示的是实际创建的是一个InnerClass类的对象,但是被上转型(如果还没有学到或者没有认真学这内容的话,你可以简单的理解为子类对象强制类型转化为父类)了,也就是说outinter这个变量引用实际指向的是一个InnerClass对象,但是只能访问OutInterface所具有的属性和方法,但是执行的效果是子类对象的方法,比如如果调用outinter.f(),实际输出为访问内部类中的方法f()
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("访问内部构造方法");
}
}