第一篇博客
Java杂记
匿名内部类问题
T I P S : TIPS: TIPS:
// 接口定义
public interface Inter {
public abstract void show();
}
- 匿名内部类相当于一个实例化后的对象,因为接口不能实例化对象,乍一看这里的
Inter i = new Inter ()
可能会有问题,但是由于
new Inter() {
@Override
public void show() {
System.out.println("匿名内部类");
}
};
这里实际上是一个实现了接口的对象,所以可以这么做。
public class Outer {
public void method() {
Inter i = new Inter() {
@Override
public void show() {
System.out.println("匿名内部类");
}
};
for (int j = 0; j < 10; j ++ ) {
i.show();
}
}
}
成员内部类问题
成员内部类可以访问外部类的其他成员
但外部类需要创建内部类的实例对象才能访问
public class Outer {
public void method() {}
public class Inner {
public void show() {
System.out.println("成员内部类");
}
}
}
在测试类中,需要:
public class Test {
public static void main(String[] args) {
Outer.Inner temp = new Outer().new Inner();
temp.show();
}
}
但一般都是用private修饰符去修饰成员内部类,防止被外界访问,通过外部类的方法去调用这个内部类对象