日期:2014-05-20  浏览次数:20892 次

求解救
package com.sf.s5;
class OuterClass{
String outer="outer class";
private int number=1;
private static int count=10;
public OuterClass(){}
public OuterClass(int number,int count){
this.number=number;
this.count=count;
System.out.println("传入的数分别为:"+this.number+"与"+this.count);
}

private void outer_1(){
System.out.println("调用外部类的非静态方法");
InnerClass inner=this.new InnerClass(); //这里的this.new是什么概念啊
}
private static void outer_2(){
System.out.println("成员内部类的构造方法");

}


class InnerClass{
String outer="inner clss";
public InnerClass(){
System.out.println("成员内部类的构造方法");
}
protected void communicate(){
System.out.println("外部类的字符串:"+OuterClass.this.outer);  
  //OuterClass.this.outer是什么意思
System.out.println("内部类的字符串"+this.outer);
}
protected void inner_1(){
System.out.println("调用外部类的私有化方法");
outer_1();
outer_2();
}
}
}
public class TextMemberInnerClass {
public static void main(String[] args){
OuterClass outer=new OuterClass(10,20);
OuterClass.InnerClass inner=outer.new InnerClass();  
System.out.println("OuterClass="+outer.outer); //这个outer.outer调用的是什么
System.out.println("InnerClass="+inner.outer);
inner.communicate();
inner.inner_1();

}
}


------解决方案--------------------
你这些问题,我觉得都是不太好理解的问题,以下个人理解:

System.out.println("OuterClass="+outer.outer); //这个outer.outer调用的是什么
这个比较正常的。前面的 outer是外部类OuterClass的对象,通过对象引用其属性。
输出是outer class。

InnerClass inner=this.new InnerClass(); //这里的this.new是什么概念啊
这里的this 就是正在使用的外部类的对象。
这句产生内部类对象的语句,因为是在外部(包含)类里,所以可以省去 this.
此处用了通用的产生内部类对象的方法。也没问题。

System.out.println("外部类的字符串:"+OuterClass.this.outer);
这句的OuterClass.this.outer,其中outerClass.this 指的是外部(包含)类的对象。以区分
内部类的this.

outterClass.this.outer就是"outer class";
而this.outer就是"inner clss"。