A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张敬培 中级黑马   /  2013-2-1 15:51  /  1403 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在java内部类中,有成员内部类,匿名内部类,方法内部类和嵌套类,请说说嵌套类与其他三种内部类的区别和用法?

2 个回复

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

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

回复 使用道具 举报
静态的内部类称嵌套类(Nested Class),如:

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

区别: 1.内部类的对象隐含一个外部类的对象引用,可以直接引用外部类的方法和属性
         另外内部类不能定义静态的属性和方法,创建内部类对象必须依赖于一个外部对象
            
       2. 嵌套类不能直接引用外部类的non-satic属性和方法,创建嵌套类对象时不依赖外部类
          对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马