内部类

内部类

基本介绍

一种类的内部有完整的嵌套了另一个类的结构,被嵌套的类就是内部类,嵌套其他类的就是外部类。内部类是我们类的第五大成员,(属性,方法,构造器,代码块,内部类),内部类的最大特点就是可以直接访问私有属性,并且可以体现类与类的包含关系

基本语法

class Outer{//外部类
    class Inner{//内部类
        
    }
}
class Other{//外部其他类
}

内部类的分类

定义在外部类的局部位置上:

  1. 局部内部类(有类名)
  2. 匿名内部类(没有类名)

定义在外部类的成员位置

  1. 成员内部类(没有static修饰)
  2. 静态内部类(使用static修饰)

局部内部类

说明:局部内部类是定义在外部类的局部变量中(方法内,代码块中),并且有类名

  1. 可以直接访问外部类的所有成员,包含私有
  2. 不能添加修饰符,因为他就是一个局部变量,但可以用final修饰,
  3. 作用域:仅仅作用于定义它的方法中或者代码块
  4. 局部内部类访问外部类:直接访问
  5. 外部类访问局部内部类

创建对象,在访问(必须在作用域内)

局部内部类的本质还是一个类

  1. 外部其他类不能访问局部内部类,因为局部内部类是局部变量
  2. 如果外部类和局部内部类的成员重名时,默认遵守就近原则,如果想访问外部类的成员,则可以使用外部类名.this.成员

匿名内部类

说明:

  1. 作用域:仅仅作用于定义它的方法中或者代码块
  2. 不能添加修饰符,因为他就是一个局部变量,但可以用final修饰
  3. 可以直接访问外部类的所有成员,包含私有
  4. 匿名内部类访问外部类:直接访问
  5. 如果外部类和匿名内部类的成员重名时,默认遵守就近原则,如果想访问外部类的成员,则可以使用外部类名.this.成员

成员内部类

成员内部类的使用:

  1. 成员内部类位于外部类的成员部位,可以访问外部类的所有成员,包括私有成员,

  2. 成员内部类,作为成员,可以使用任意修饰符

静态内部类

成员内部类的使用:

  1. 成员内部类位于外部类的成员部位,可以访问外部类的所有静态成员,包括私有静态成员,但不能访问其他成员
  2. 作用域与其他成员一样,为整个类体
  3. 外部其他类怎么访问静态内部类:
外部类名.静态内部类 实际名称= new 外部类名.静态内部类名.实际名//因为是静态的
    //或者:
    在外部类中写一个公共的方法来返回静态内部类就可以了

如果外部类和静态成员类重名的话,采用就近原则,如果非要采用外部类成员,那么则采用 外部类.成员(区别在于没有this,因为这里是静态类,所以不用this)

小结

内部类有四种:局部内部类,匿名内部类,成员内部类,静态内部类

  1. 重点还是掌握匿名内部类的使用
  2. new 类/接口 (参数列表)
  3. 成员内部类,静态内部类都放在外部类的成员位置上的
posted @ 2023-04-17 15:20    阅读(27)  评论(0)    收藏  举报