- public class Outer {
- // 普通内部类
- class Inner {
- public void sayHello() {
- System.out.println("this is a inner!");
- }
- }
- // 内部类是接口类型
- interface InterfaceInner {
- public abstract void sayHello();
- }
- public static void main(String[] args) {
- Outer out = new Outer();
- // 内部类想要时候必须通过 它的外部类。格式为:
- // 外部类.内部类 对象 = new 外部类().new 内部类()
- // 或者为:
- // 外部类.内部类 对象 = 外部类对象.new 内部类()
- Outer.Inner inner = out.new Inner();
- inner.sayHello();
- // 问题在这里,为什么接口类型的内部类不能通过上面的格式实例化?
- // 如果是这个样子就会报错
- Outer.InterfaceInner iiOne = out.new InterfaceInner() { // 这里报错
- @Override
- public void sayHello() {
- // TODO Auto-generated method stub
- }
- };
- Outer.InterfaceInner iiTwo = new InterfaceInner() { // 这个样子就不会报错
- @Override
- public void sayHello() {
- System.out.println("InterfaceInner");
- }
- };
- iiTwo.sayHello();
- }
- }
复制代码 问题注释在代码内,各位同学copy,运行。看看是我哪里格式问题,还是理解有问题。
|