一、前言
本文将讲述有关内部类的知识点
二、内部类定义
内部类:在一个类的里面再定义一个类
public class Outer{ public class Inner{ ··· } }
三、内部类简单应用
需求:写一个JavaBean类描述汽车
属性:汽车品牌、颜色,发动机品牌、使用年限
这时候我们定义成员属性的时候,除了carName、carColour,还有engineName、engineAge如果我们写一个Car类的话,后面两个属性就没办法定义在这个类中,只能重新写一个Engine类,但是由于发动机又是车的一部分,所以要把Engine类放到Car类中,这时候Engine类就是内部类了
public class Car{ String carName; String carColour; class Engine{ String engineName; int engineAge; } }
四、内部类特点
- 外部类一部分
- 单独出现没有意义
- 可以直接访问外部类成员,私有化成员变量也可以访问
- 外部类不能直接访问内部类对象,要先创建对象
五、内部类分类
- 成员内部类
- 静态内部类
- 局部内部类
- 匿名内部类(重点使用)
六、成员内部类
1.书写
- 写在成员位置,属于外部类的成员
- 可以被修饰符修饰
2.创建成员内部类对象
- 当成员内部类被private修饰时,在外部类中编写方法,对外提供内部类对象
- 直接创建
外部类名.内部类名 对象名 = 外部类对象.内部类对象;
Outer.Inner oi = new Outer().new Inner();
3.获取外部类成员变量
out.this.变量名
4.实例
public class Outer{ private int a = 10; class Inner{ int a = 20; System.out.println(Outer.this.a); System.out.println(this.a); System.out.println(a); } }
输出的结果为:10、20、30
5.内存图
七、静态内部类
1.特点
- 静态内部类是一种特殊的成员内部类
- 有static修饰,属于外部类本身的
- 总结:静态内部类与其他类的用法完全一样。只是访问的时候需要加上
外部类.内部类
2.注意点
- 可以直接访问外部类的静态成员
- 不可以直接访问外部类的非静态成员,如果要访问需要创建外部类的对象
- 静态内部类中没有
Outer.this
3.使用格式
外部类.内部类
4.静态内部类对象的创建格式
外部类.内部类 变量 = new 外部类.内部类构造器;
5.调用方法的格式
- 调用非静态方法的格式:先创建对象,用对象调用
- 调用静态方法的格式:外部类名.内部类名.方法名()
八、局部内部类
1.定义
- 定义在方法中的类
2.格式
class 外部类名 { 数据类型 变量名; 修饰符 返回值类型 方法名(参数列表) { // … class 内部类 { // 成员变量 // 成员方法 } } }
九、结语
下一篇文章中我们将介绍匿名内部类相关知识点,也是在编写程序时非常重要的一个知识