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

    内部类

      成员内部类

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

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

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

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

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

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

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

      静态内部类

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

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

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

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

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

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

      局部内部类

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

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

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

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

      匿名内部类

      

      

  • 相关阅读:
    selenium的安装(2)
    Python安装(一)
    linu基础入门(一)
    docker基础学习三
    docker基础学习二
    docker基础学习一
    ELK简单学习
    Elasticsearch入门学习(四):使用javaAPI学习ES
    Elasticsearch入门学习(三):集群的搭建
    Elasticsearch入门学习(二):简单的入门学习
  • 原文地址:https://www.cnblogs.com/LearnSB/p/13245941.html
Copyright © 2011-2022 走看看