黑马程序员技术交流社区

标题: 内部类和嵌套类 [打印本页]

作者: 张敬培    时间: 2013-2-1 15:51
标题: 内部类和嵌套类
在java内部类中,有成员内部类,匿名内部类,方法内部类和嵌套类,请说说嵌套类与其他三种内部类的区别和用法?

作者: Gaara    时间: 2013-2-1 16:16
可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型: 静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。所以说标有static 的class,为静态嵌套类,如果没有static修饰则为内部类。

匿名内部类只能使用一次,不区分static和非static。如果用到外部类的变量的话,必须是类变量或者实例变量,就是必须是类定义的变量,或者final的局部变量。匿名内部类如果是继承某个类的话是可以重写那个类的方法的,这个和普通内部类一样。
可以用匿名内部类的地方都可以用内部类替换,但是用匿名内部类编码非常简洁,也容易读懂,除非你需要多次使用那个内部类,不然总是建议使用匿名内部类。


作者: 邝雄伟    时间: 2013-2-1 16:31
静态的内部类称嵌套类(Nested Class),如:

class Outer {
  class Inner { } //Inner class
  static class Nested { }  //Nested class
}

区别: 1.内部类的对象隐含一个外部类的对象引用,可以直接引用外部类的方法和属性
         另外内部类不能定义静态的属性和方法,创建内部类对象必须依赖于一个外部对象
            
       2. 嵌套类不能直接引用外部类的non-satic属性和方法,创建嵌套类对象时不依赖外部类
          对象





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