1.成员内部类的使用
- 说明:成员内部类是定义在外部类的成员位置,并且没有static修饰
- 可以直接访问外部类的所有成员,包含私有的
- 可以添加任意访问修饰符(public、protected、默认、private), 因为它的地位就是一个成员
package com.logic.innerclass;
public class MemberInnerClass01 {
public static void main(String[] args) {
Outer03 outer03 = new Outer03();
outer03.t1();
}
}
class Outer03 {//外部类
private String name = "logic";
private int n1 = 99;
//定义在外部类成员位置上
class Inner03 {//内部类
public void say() {
System.out.println("name = " + name + " n1 = " + n1);
}
}
public void t1() {
Inner03 inner03 = new Inner03();
inner03.say();
}
}
- 作用域 和外部类的其他成员一样,为整个类体,比如前面案例,在外部类的成员方法中创建成员内部类对象,再调用方法
- 成员内部类---访问---->外部类成员(比如:属性)【访问方式:直接访问】
- 外部类---访问------>成员内部类(说明)访问方式: 创建对象,再访问
- 外部其他类---访问---->成员内部类 本质两种方法
//外部其他类,使用成员内部类的三种方式
// 第一种方式
// outer08.new Inner08(); 相当于把 new Inner08()当做是outer08成员
// 这就是一个语法,不要特别的纠结.
Outer08.Inner08 inner08 = outer08.new Inner08();
inner08.say();
// 第二方式 在外部类中,编写一个方法,可以返回 Inner08对象
Outer08.Inner08 inner08Instance = outer08.getInner08Instance();
inner08Instance.say();
- 如果外部类和内部类的成员重名时,内部类访问的话,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.this.成员)去访问