美文网首页
Java-0012-嵌套类

Java-0012-嵌套类

作者: 云转水流 | 来源:发表于2016-07-25 09:02 被阅读28次

2016.7.21

嵌套类Nested Class

多数情况下把nested class分为两种
Static Nested Class(静态嵌套类):就是用static修饰的成员嵌套类
Inner Class(内部类):静态嵌套类之外所有的嵌套类的总称,也就是没有用static定义的nested classes

而Inner class又可以分为三种
inner member class
没有用static 修饰的成员内部类
local inner class
定义在方法里面的内部类,方法可以是static的也可以是非static的,也可以是构造器方法。
anonymous inner class
匿名内部类,定义在方法里面匿名类,方法可以是static的也可以是非static的

访问规则

Static Nested Class(静态嵌套类)

用Static修饰的Nested Classes,只能访问外部类的static变量。
对于public 的 static Nested Classes 可以用 new 外部类.内部类()的方式直接创建。而
用默认(default)的static Nested Classes 可以在同一包名下,用 new 外部类.内部类()的方式创建。其实和外部类的方式差不多。静态成员类可以使用访问控制符,可以使用static修饰,可以是abstract抽象类

Inner Class访问规则

inner member classes(内部成员类) 可以访问外部类的所有实例属性,静态属性。因为内部成员类持有一个外部对象的引用,内部类的实例可以对外部类的实例属性进行修改。如果是public的 inner member classes,可以通过 外部类实例.new 内部类()的方式进行创建,当调用内部类的构造器的时候,会把当前创建的内部类对象实例中持有的外部对象引用赋值为当前创建内部类的外部类实例。内部成员类可以是使用访问控制符,可以定义为final,也可以是抽象类。

local inner classes(局部类)

局部类 定义在类方法里面。这个方法既可以是静态方法,也可以是实例方法,也可以是构造器方法或者静态初始化语句块。

局部类可以定义在一个static上下文里面 和 非static上下文里面。局部类不能有访问控制符(private,public,protected修饰),可以是抽象的,也可以定义为final

定义在static上下文(static 字段初始化,static初始化块,static方法)里面的local inner classes 可以访问类的静态属性,如果定义在静态方法里面的局部类,还可以使用方法里面定义的final变量。在static上下文定义的局部类,没有指向父类实例变量的引用,因为static方法不属于类的实例,属于类本身。而且局部类不能在外部进行创建,只能在方法调用的时候进行创建。

anonymous inner classes (匿名类)

也是定义在方法里面,匿名类和局部类访问规则一样,只不过内部类显式的定义了一个类,然后通过new的方式创建这个局部类实例,而匿名类直接new一个类实例,没有定义这个类。匿名类最常见的方式就是回调模式的使用,通过默认实现一个接口创建一个匿名类然后,然后new这个匿名类的实例。

参考文章:java嵌套类(Nested Classes)总结

相关文章

  • Java-0012-嵌套类

    2016.7.21 嵌套类Nested Class 多数情况下把nested class分为两种Static Ne...

  • 局部类和嵌套类

    一. 嵌套类 1.1嵌套类的定义 在一个类体中定义的类叫作嵌套类。拥有嵌套类的类叫外围类。 1.2嵌套类的作用 定...

  • 常见的类

    嵌套类 内部类 枚举类 密封类 数据类 单例模式 伴生对象 嵌套类 嵌套类是嵌套在其它类中的类 不能访问外部类的成...

  • kotlin精讲-第3章(4)嵌套类&数据类

    嵌套类 我们在Kotlin内部还可以定义类,这样的类,我们可以称为嵌套类(nestedclasses)。嵌套类分成...

  • Java 内部类(嵌套类)和局部类

    嵌套类 定义在另一个类中的类,就叫嵌套类。在嵌套类外层的累,称为:外部类最外层的外部类,称为:顶级类 嵌套类又分为...

  • Kotlin面向对象 (7)✔️嵌套类

    嵌套类内部类 (特殊的嵌套类) kotlin 语言中允许在一个类的内部声明另一个类,称为“嵌套类”,嵌套类还有一种...

  • Java-嵌套类

    嵌套类分为两类:静态和非静态。被声明static的嵌套类称为静态嵌套类。非静态嵌套类称为内部类。内部类有两种特殊的...

  • 10. 内部类

    1. 普通嵌套类 在Kotlin中,一个类嵌套在其他类中,而且可以嵌套多层 测试代码: 访问嵌套类的方式是 直接使...

  • kotlin 嵌套和内部类

    Kotlin 嵌套类 与Java类似,Kotlin允许您在另一个称为嵌套类的类中定义一个类 由于嵌套类是其封闭类的...

  • Android开发必知的java嵌套类

    嵌套类 指定义在另一个类的内部的类,嵌套类的存在只是为了他的外围类。嵌套类有四种:静态成员类,非静态成员类,匿名类...

网友评论

      本文标题:Java-0012-嵌套类

      本文链接:https://www.haomeiwen.com/subject/gdnbjttx.html