美文网首页
java的内部类

java的内部类

作者: 这是朕的江山 | 来源:发表于2016-08-09 14:50 被阅读23次

1.使用内部类的原因:
a.内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据
b. 内部类可以对同一个包中的其他类隐藏起来
c.当想要定义一个回调函数又不想编写大量代码时,使用匿名内部类比较便捷

2.内部类的对象总存在一个隐式引用,它指向了创建它的外部类对象。这个引用在内部类的定义中是不可见的。外部类的引用在构造器中设置,编译器修改了所有内部类的构造器,添加一个外围类的引用参数。如果内部类没有定义构造器,那么编译器会为它生成一个带有外部类引用的默认构造器。

3.内部类是一种编译器现象,与虚拟机无关。编译器会把内部类翻译成用$(美元符号)分割内部类名和外部类名的常规类文件,而虚拟机对此一无所知。

4.编译器为了引用外围类,生成了一个外围类的实例域。

5.如果一个内部类使用的频率很低,可以把它包装在外部类的一个方法里,称为局部内部类。局部类不能使用public或private访问说明符进行声明,它的作用被限定在声明这个局部类的块中。局部类有一个优点,即对外部世界可以完全隐藏起来,除了包裹内部类的方法外没有任何其他方法知道它的存在。

6.匿名内部类必须且只继承一个类或一个接口,并且不能定义构造函数,也不能存在任何静态成员变量和静态方法。匿名内部类不能是抽象的,它必须实现继承类或接口的所有抽象方法。

7.拷贝引用,为了避免引用值发生改变,例如被外部类的方法修改等,而导致内部类得到的值不一致,于是用final来让该引用不可改变。故如果定义了一个匿名内部类,并且希望它使用一个其外部定义的参数,那么编译器会要求该参数引用是final的。

8.在内部类不需要访问外围类对象时,应该使用静态内部类,静态内部类就是在一个内部类前面用static修饰。所以静态内部类只能访问外部类的静态变量和方法。静态内部类的实例创建不用依赖外部类的实例,它可以师姐使用
OuterClass.InnerClass a=new OuterClass.InnerClass();来创建

相关文章

  • Java 中的方法内部类

    Java 中的方法内部类 方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内...

  • PHP转JAVA的记录

    Java 数组 内部类 内部类的创建:内部类可以对包内其他类隐藏想实现一个接口时, 不想新建类文件 内部类可以访问...

  • Java内部类

    Java内部类,简单来说就是将一个类定义在另一个类或者方法里面,主要分为成员内部类,局部内部类,匿名内部类和静态内...

  • Java内部类

    Java内部类 大纲: java内部类有什么特点?为什么需要内部类? 非静态内部类持有外部类的引用 内部类的分类。...

  • Java静态内部类

    Java静态内部类 博客分类: java 两种内部类 Java的内部类有两种,一种是静态内部类,另一种是普通内部类...

  • 内部类

    内部类可以分为:非静态内部类;静态内部类;匿名内部类。 一、内部类 首先要说,Java为什么要使用内部类?java...

  • JavaSE基础知识学习-----内部类

    内部类 类的五个成分:属性,方法,构造器,代码块,内部类。什么是内部类?在java中,允许一个类定义在另一个类的内...

  • Kotlin内联类、内部类、嵌套类

    Kotlin内联类、内部类、嵌套类 在开始介绍Kotlin内联类、内部类、嵌套类之前,先简要回顾一下java中的内...

  • Java 内部类和泛型的理解

    Java 内部类 Java非静态内部类持有对外部类的引用,可以访问外部类的状态使用方法 OuterClass.th...

  • kotlin之内部类,匿名内部类与伴生对象

    个人博客:haichenyi.com。感谢关注 内部类   kotlin的内部类与java的内部类有点不同java...

网友评论

      本文标题:java的内部类

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