class OuterClass {
public int data1 = 10;
public int data2 = 20;
//实例内部类
class InnerClass{
//问题2:在实力内部类当中,是否可以定义static的数据成员?
//不可以,static final是可以的,必须是编译时期确定的
public int data3 = 100;
public int data4 = 200;
public int data1 = 1000;
public InnerClass(){
}
public void func(){
System.out.println("InnerClass::func()");
//内部类可以访问外部类的所有数据成员包括私有的
System.out.println("data1 = "+ data1);//1000,内部类成员优先
//如何拿到外部类的引用,OuterClass.this
System.out.println("data1 = "+OuterClass.this.data1);//10
//所以说实例内部类是有额外的开销的,包含了外部类的this
}
}
}
public class TestClass{
public static void main1(String[] args) {
//问题1:如何拿到实例内部类对象?
OuterClass outerClass = new OuterClass();
OuterClass.InnerClass in = outerClass.new InnerClass();
in.func();
}
}
静态内部类
class OuterClass2{
public int data1 = 10;
//静态内部类
static class InnerClass2{
public int data3 = 300;
public static int data4 = 400;
public int data1 = 100;
OuterClass2 o = null;
public InnerClass2(){
}
public InnerClass2(OuterClass2 out){
this.o = out;
}
public void func(){
System.out.println("InnerClass2::finc()");
//静态内部类是否可以访问外部类的实例成员?不可以直接访问
System.out.println("data1 = " + o.data1);//间接访问
}
}
}
public class TestClass{
public static void main(String[] args) {
//问题1:如何拿到静态内部类对象?
OuterClass2.InnerClass2 in= new OuterClass2.InnerClass2();
in.func();
}
}
实例内部类class OuterClass { public int data1 = 10; public int data2 = 20; //实例内部类 class InnerClass{ //问题2:在实力内部类当中,是否可以定义static的数据成员? //不可以,static final是可以的,必须是编译时期确定的 ...