问题描述
classOuter{intout_i=30;voidtest(){Innerin=newInner(this);in.display();}publicstaticvoidmain(String[]args){Outerout=newOuter();out.test();}classInner//类后面不要加括号是classInner{}而不是classInner(){}{Outerouter;publicInner(Outerouter){this.outer=outer;}voiddisplay(){System.out.println("out_i="+outer.out_i);//system.out.println()括号里面的变量连接是+,而不是逗号,}}}
解决方案
解决方案二:
引用楼主yfhllyf1的帖子:
classOuter{intout_i=30;voidtest(){Innerin=newInner(this);in.display();}publicstaticvoidmain(String[]args){Outerout=newOuter();out.test();}classInner//类后面不要加括号是classInner{}而不是classInner(){}{Outerouter;publicInner(Outerouter){this.outer=outer;}voiddisplay(){System.out.println("out_i="+outer.out_i);//system.out.println()括…
哪个this啊?
解决方案三:
this指的是当前的对象。classInner//内部类{Outerouter;publicInner(Outerouter)//内部类构造{this.outer=outer;//指创建对象的时候传入参数outer,赋给当前对象的属性outer}
解决方案四:
补充:Innerin=newInner(this);//这个this是指把外部类当前的对象作为参数传给Inner构造器
publicInner(Outerouter)//{this.outer=outer;//指内部类创建对象的时候传入参数outer,赋给当前内部类对象的属性outer}
解决方案五:
Innerin=newInner(this);//this指的是当前对象,在这也就是指在main方法体里Outerout=newOuter();产生的对象
解决方案六:
引用2楼yxc0433的回复:
this指的是当前的对象。JavacodeclassInner//内部类{Outerouter;publicInner(Outerouter)//内部类构造{this.outer=outer;//指创建对象的时候传入参数outer,赋给当前对象的属性outer}
回答正确
解决方案七:
this都是指当前对象Innerin=newInner(this);//this指Outer的对象this.outer=outer;//this指Inner的对象
解决方案八:
构造方法就是不是只有对象才能调动,当你new的时候就会调动构造函数,而那个this就是代表当前对象,可以这样理解也就是在你调构造函数的时候传了一个this进去,代表当前对象,this.outer就是当前对象的成员变量了,要是你不用this.那就是构造函数自己的参数赋值给自己了.也就是没有初始化成员变量。
解决方案九:
Innerin=newInner(this);//这个this指的是Outer对象this.outer=outer;//这个this指的是Inner对象