- 在成员内部类也可以被一些权限修饰符修饰
- 成员内部类的地位相当于成员变量:定义格式:修饰符 class 类名 {}
- jdk16以前成员内部类不能定义静态变量,jdk16以后可以
- 获取成员内部类对象的两种方式:
- 方式1:外部类编写方法,对外提供内部类对象(一般是内部类对象被private修饰) 格式 public void 方法名(){return new 内部类对象名()}
- 方式2 :直接创建,格式:外部类对象名.内部类对象名 对象名 = new 外部类对象名().new 内部类对象名();
ps:外部类成员变量和内部类成员变量重名时,我们用外部类名.this.变量名来在内部类中访问外部类访问,this指代调用者的地址
静态内部类:
- 静态内部类是一种特殊的成员内部类(用static修饰)
- 静态方法中只能调用静态变量
- 创建静态内部类对象的方式:外部类对象名.内部类对象名 对象名= new 外部类对象名.内部类对象名();
- 如何调用静态内部类中的方法:
- 静态方法:外部类对象名.内部类对象名.方法名();
- 非静态方法:创建静态内部类对象,在去调用
局部内部类:
- 将内部类定义在方法里面就叫局部内部类,相当于方法里面的局部变量
- 外部无法使用,需要在方法内部创建对象并且使用
- 该类可以直接访问外部类成员,也可以访问内部类局部变量
- 用static修饰的方法,都可以用类名.方法名();来调用
匿名内部类:
- 匿名内部类指隐藏了名字的内部类,可以写在成员位置,也可以写在局部位置
- 匿名内部类的格式:new 接口名/类名(){方法的重写};
- 格式细节:包含了实现或者继承,方法的重写,对象的创建,整体就是一个类的子类对象或者一个接口的实现类对象,可以运用在多态或者接口多态
- 使用场景:当方法参数是接口或者类时,以接口为例,可以传递这个接口的实现类对象,如果接口只实现一次,就可以使用匿名内部类简化代码,调用方法时传递匿名内部类或者可以用接口名/类名 对象名=匿名内部类,然后在把对象名传到方法中去
标签:部类,内部,静态,局部,对象,匿名,成员 From: https://www.cnblogs.com/lyjzht/p/17024258.html