内部类

作者: TheBestTheLost | 来源:发表于2019-10-26 20:09 被阅读0次

概念:定义在另外一个类里面的类,与之对应的是,包含内部类的类被称为外部类。

  • 主要作用:
    1.内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类。
    2.内部类的方法可以访问外部类的所有数据,包括私有数据。而外部类要访问内部类的数据,必须使用外部类对象建立内部类的对象,而不能直接new一个内部类对象。即:内部类 对象名=外部类对象.new 内部类();
    例:class Outer{
    int num = 4;
    class Inner {
    void show(){
    System.out.println("inner show run "+num);
    }
    }
    public void method(){
    Outer outer=new Outer();//创建外部类对象
    Inner inner=outer.new Inner();//通过外部类对象创建内部类对象
    inner.show();//调用内部类的方法。
    }
    }
    3.如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。如:

image

运行结果:

image
  • 分类:
    成员内部类
    方法内部类
    静态内部类
    匿名内部类
  • 当内部类定义在外部类中的成员位置上,可以使用一些成员修饰符修饰 private、public、protected static。
    1、默认修饰符。
    直接访问内部类格式:外部类名.内部类名 变量名 = 外部类对象.内部类对象;
    Outer.Inner in = new Outer.new Inner();//这种形式很少用。
    但是这种应用不多见,因为内部类之所以定义在内部就是为了封装。想要获取内部类对象通常都通过外部类的方法来获取。这样可以对内部类对象进行控制。
    私有修饰符。
    通常内部类被封装,都会被私有化,因为封装性不让其他程序直接访问。
    2、静态修饰符(静态内部类)。
    ** 2.1 如果内部类被静态修饰,相当于外部类,会出现访问局限性,只能访问外部类中的静态成员。**
    注意;如果内部类中定义了静态成员,那么该内部类必须是静态的。
    内部类编译后的文件名为:"外部类名$内部类名.java";
    为什么内部类可以直接访问外部类中的成员呢?
    那是因为内部中都持有一个外部类的引用。这个是引用是 外部类名.this
    2.2 内部类可以定义在外部类中的成员位置上,也可以定义在外部类中的局部位置上。
    当内部类被定义在局部位置上,只能访问局部中被final修饰的局部变量。
    2.3 静态内部类的特点:
    1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问

2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员

3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();

image

运行结果 :

image
3、 方法内部类:
方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。

image

一定要注意哦:由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。

4、匿名内部类(对象):没有名字的内部类。就是内部类的简化形式。一般只用一次就可以用这种形式。匿名内部类其实就是一个匿名子类对象。想要定义匿名内部类:需要前提,内部类必须继承一个类或者实现接口。
匿名内部类的格式:new 父类名&接口名(){ 定义子类成员或者覆盖父类方法 }.方法。
匿名内部类的使用场景:
当函数的参数是接口类型引用时,如果接口中的方法不超过3个。可以通过匿名内部类来完成参数的传递。
其实就是在创建匿名内部类时,该类中的封装的方法不要过多,最好两个或者两个以内。

相关文章

  • 内部类

    成员内部类 局部内部类(定义在方法内和定义在作用域内的类) 匿名内部类

  • Java 内部类

    内部类包括成员内部类、方法内部类、*静态内部类、匿名内部类*。 内部类的作用 由于内部类的实现和外部类没有关系,内...

  • Java学习——内部类

    内部类 一,成员内部类(包括静态内部类和非静态内部类) 非静态内部类可以直接访问外部类的成员,反之则不行 非静态内...

  • Java 内部类、静态内部类、方法内部类(未完待续)

    内部类 什么是内部类?内部类其实就是在一个类中创建的类。内部类有四种: 成员内部类 静态内部类 局部内部类 匿名内...

  • java 内部类

    一般有四种内部类的使用方式: 嵌套的内部类 方法内的内部类 静态内部类 匿名内部类 什么时候用内部类: 有时候明显...

  • 内部类

    内部类 1.可以访问访问其外部类所有属性和方法,无需创建外部类对象 2.必须创建内部类对象,否则无法从外部类访问内...

  • Java 中的方法内部类

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

  • java——内部类

    内部类 定义: 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内...

  • java之面向对象5

    方法内部类: 简而言之就是定义在外部类的方法内的类。 方法内部类只在该方法的内部可见,即只在该方法内可以使用。 方...

  • Java 内部类

    1. 内部类 概念:在一个类的内部再定义一个完整的类内部类分为 4 类:成员内部类、静态内部类、局部内部类、匿名内...

网友评论

      本文标题:内部类

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