黑马程序员技术交流社区

标题: 关于内部是接口类型的实例化问题。 [打印本页]

作者: weimoliang    时间: 2014-5-26 14:00
标题: 关于内部是接口类型的实例化问题。
  1. public class Outer {

  2.         // 普通内部类
  3.         class Inner {
  4.                 public void sayHello() {
  5.                         System.out.println("this is a inner!");
  6.                 }
  7.         }

  8.         // 内部类是接口类型
  9.         interface InterfaceInner {
  10.                 public abstract void sayHello();
  11.         }

  12.         public static void main(String[] args) {

  13.                 Outer out = new Outer();
  14.                 // 内部类想要时候必须通过 它的外部类。格式为:

  15.                 // 外部类.内部类 对象 = new 外部类().new 内部类()
  16.                 // 或者为:
  17.                 // 外部类.内部类 对象 = 外部类对象.new 内部类()
  18.                 Outer.Inner inner = out.new Inner();
  19.                 inner.sayHello();

  20.                 // 问题在这里,为什么接口类型的内部类不能通过上面的格式实例化?
  21.                 // 如果是这个样子就会报错
  22.                 Outer.InterfaceInner iiOne = out.new InterfaceInner() { // 这里报错

  23.                         @Override
  24.                         public void sayHello() {
  25.                                 // TODO Auto-generated method stub

  26.                         }
  27.                 };

  28.                 Outer.InterfaceInner iiTwo = new InterfaceInner() { // 这个样子就不会报错

  29.                         @Override
  30.                         public void sayHello() {
  31.                                 System.out.println("InterfaceInner");

  32.                         }
  33.                 };
  34.                 iiTwo.sayHello();

  35.         }

  36. }
复制代码
问题注释在代码内,各位同学copy,运行。看看是我哪里格式问题,还是理解有问题。


作者: 成小龙    时间: 2014-5-26 14:28
内部类  干出接口来了?做什么用的   
作者: 成小龙    时间: 2014-5-26 14:29
接口 不能直接实例化  实现的子类可以  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2