zoukankan      html  css  js  c++  java
  • 内部类

    内部类

      成员内部类

        场景一:看到成员两个字,我们首先就想到了同样含有”成员“的成员变量,我们知道成员变量是定义在类中,所有方法(函数)之外的变量;那么成员内部类是否和成员变量处于相同的位置呢?

        1)是的,成员内部类定义在一个类的里面(由此可以访问其外部类的私有属性),所有函数(方法)的外面。

        2)private关键字可以修饰成员内部类,表示这个内部类只能在其外部类内部使用。

        3)内部类会生成独立的.class文件。

        场景二:既然成员内部类这么特殊,那么如何创建成员内部类的对象呢?

        1)在其外部类内部创建内部类的对象,直接创建即可。

        2)在非外部类内部创建内部类的对象,需要先创建其外部类对象(内部类是可以访问其外部类的成员变量的,但是每个外部类对象的成员变量属性可能是不一致的,内部类访问外部类成员变量属性的时候,我们需要确认外部类成员变量的值),再创建内部类对象。

      静态内部类

        我们之前有说过,static关键字是不能去修饰类的对不对?是的,但是static可以修饰内部类,成为静态内部类。

        那么成员内部类与静态内部类在使用上有什么区别呢?

        我们先看下成员内部类和静态内部类在访问外部类成员上的不同:成员内部类是可以访问其外部类的所有静态以及非静态成员的,但是不能在一个成员内部类中定义静态方法(初始化时间冲突);但是静态内部类只能访问其外部类的静态成员;

        场景二:创建静态内部类的对象

        1)在外部类中创建静态内部类的对象,与成员内部类并无区别,直接创建即可。

        2)在外部类的外部创建静态内部类的对象,可以使用“外部类.内部类”的方式创建。

      局部内部类

        看到局部两个字,会不会首先想到‘局部变量’呢?所谓局部变量,指得是定义在方法内部的变量。我们今天要说的局部内部类也与之类似,局部内部类,指得就是定义在方法内部的类。

        场景一:我们在外部类的某个方法内定义了一个内部类,这就是局部内部类;与局部变量的作用范围相同,也是仅仅在方法内使用。局部内部类可以访问外部类的静态属性和私有属性。

        场景二:局部内部类是否可以访问方法中处于相同位置的局部变量呢?

        我们知道局部变量会在方法(函数)执行完后就自动释放内存的,也就是说方法执行完之后,这个局部变量是要被清除的;如果我们在这个局部变量被清除的情况下去访问它,肯定是不能编译通过的!那么有什么解决的方法吗?我们再回忆下final这个关键字,当它修饰变量的时候,变量会变成常量,一个常量是不会像局部变量一样再方法调用后直接被清除的,所以我们可以使用final关键字修饰方法的局部变量。

      匿名内部类

      

      

  • 相关阅读:
    设计模式之工厂模式-抽象工厂(02)
    1036 跟奥巴马一起编程 (15 分)
    1034 有理数四则运算 (20 分)
    1033 旧键盘打字 (20 分)
    1031 查验身份证 (15 分)
    大学排名定向爬虫
    1030 完美数列 (25 分)二分
    1029 旧键盘 (20 分)
    1028 人口普查 (20 分)
    1026 程序运行时间 (15 分)四舍五入
  • 原文地址:https://www.cnblogs.com/LearnSB/p/13245941.html
Copyright © 2011-2022 走看看