实例内部类
-
不能有静态的数据成员
-
如何拿到内部类对象
class OuterClass {
public int data1 = 10;
public static int data2 = 20;
class InnerClass {
public int data1 = 100;
public int data2 = 999;
public InnerClass() {
System.out.println("InnerClass()");
}
public void func() {
System.out.println("data2:"+data2);
System.out.println("data1:"+this.data1);
}
}
public static void main(String[] args) {
OuterClass o = new OuterClass();
OuterClass.InnerClass in = o.new InnerClass();
in.func();
}
面试题:
实例内部类是否拥有外层类对象/是否有额外的开销?
是,内部类通过外部类名.this.方法名()
静态内部类
- 类名前加static
- 静态内部类不能直接访问外部内部类的非静态数据成员,但是可以间接访问
OuterClass.InnerClass in=new OuterClass.InnerClass();
匿名内部类
class MyThread{
}
public static void main(String[] args){
new MyThread(){
public void func(){
System.out.println("hello");
}
}.func();
}
}