JAVA内部类基础
2026/6/16 17:40:16 网站建设 项目流程

内部类
一、概念

  1. 内部类:定义在一个类内部的类

  2. 内部类编译之后生成独立的 .class 文件,命名: 外部类类名$内部类类名.class

  3. 内部类可以直接使用外部类私有成员,从而不破坏外部类的封装性。

  4. 内部类的分类:成员内部类、静态内部类、局部内部类、匿名内部类。
    二、内部类的分类

  5. 成员内部类:类比于实例变量 【了解】
    (1) 位置:定义在类以内,方法以外。
    (2) 成员内部类对象的创建,必须依赖于外部类的对象而创建:
    Outer o = new Outer(); // 外部类的对象
    Outer.Inner i = o.new Inner(); // 内部类的对象
    (3) 外部类的当前对象:外部类类名.this
    外部类类名.this.属性名 -》访问外部类的属性
    外部类类名.this.成员方法名(参数) ; ---->调用外部类的成员方法
    (4) 成员内部类中不能定义静态成员(静态属性和静态方法)

  6. 静态内部类:类比于静态变量【了解】
    (1) 位置:定义在类以内,方法以外,同时被 static 修饰
    (2) 静态内部类中可以定义实例变量,也可以定义静态变量
    (3) 创建静态内部类的对象,只需要依赖于外部类的类名即可:
    Outer.Inner i = new Outer.Inner();
    (4) 访问静态内部类的静态成员时,可以直接通过 外部类类名.静态内部类类名 进行访问。
    外部类类名.静态内部类类名.静态属性名
    外部类类名.静态内部类类名.静态方法名(实参);
    (5) 静态内部类只能访问外部类的静态成员(静态属性和静态的方法)

  7. 局部内部类:类比于局部变量
    (1) 位置:定义在方法内部
    (2) 局部内部类对象的创建,必须在定义它的方法内部创建,并且在类的定义位置后面完成对象的创建
    (3) 局部内部类的方法中可以访问定义它的方法内部的局部变量,但是要求局部变量必须 被 final 修饰。
    注意:JDK8.0及以上版本,编译器编译时,如果检测到局部变量被局部内部类中方法访问,则默认
    为此局部变量前面 final ,这种技术被称为语法糖。

  8. 匿名内部类:是一个特殊的局部内部类
    (1) 匿名内部类的定义必须继承一个类或是实现一个接口
    (2) 基于一个匿名内部类只能创建该类的一个对象,并且匿名内部类的定义和对象的创建一起完成。
    (3) 语法:
    接口名 引用名 = new 接口名(){
    // 接口中需要实现的方法
    };
    (4) 匿名内部类的优缺点:
    a. 优点:减小代码量,让编程思路连贯。
    b. 缺点:可读性低。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询