萌新有个关于内部类的问题,求各位大佬解答,非常感谢

qstwyz 2017-11-14 08:33:40
关于内部类的一个小问题,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("访问内部构造方法");
}

}
...全文
218 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Clumsy__Cat 2017-11-21
  • 打赏
  • 举报
回复
doit()方法返回的是OutInterface类型,然后左边是OutInterface类型,有什么问题吗?左边和右边一样你有什么好问的?
自由自在_Yu 2017-11-21
  • 打赏
  • 举报
回复
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("访问内部构造方法");
	}
}
繁华终归落尽 2017-11-15
  • 打赏
  • 举报
回复
慢慢学,慢慢理解,一口气吃不了大胖子
偏安zzcoder 2017-11-15
  • 打赏
  • 举报
回复
OutInterface outinter=out.doit(); 表示的是实际创建的是一个InnerClass类的对象,但是被上转型(如果还没有学到或者没有认真学这内容的话,你可以简单的理解为子类对象强制类型转化为父类)了,也就是说outinter这个变量引用实际指向的是一个InnerClass对象,但是只能访问OutInterface所具有的属性和方法,但是执行的效果是子类对象的方法,比如如果调用outinter.f(),实际输出为访问内部类中的方法f()
qstwyz 2017-11-14
  • 打赏
  • 举报
回复
引用 1 楼 pany1209 的回复:
啥都不懂。。说了你也不懂
好吧 我还是慢慢学吧
李德胜1995 2017-11-14
  • 打赏
  • 举报
回复
啥都不懂。。说了你也不懂

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧