- 作用域和外部类的其他成员一样,为整个类体,可以在外部类的成员方法中创建成员内部类对象,再调用方法。
- 成员内部类访问外部类成员(比如:属性),可以直接访问。
- 外部类访问成员内部类,访问方式为:创建对象,再访问。
- 外部其他类也可以使用成员内部类。 ```java package test;
public class Main { public static void main(String[] args) { Outer outer = new Outer(); outer.t1();
System.out.println("==============");
//外部其他类,使用成员内部类的三种方式
// 第一种方式(一种特定的语法)
//相当于把 new Inner()当做是outer成员
System.out.println("方法一:");
Outer.Inner inner = outer.new Inner();
inner.say();
// 第二方式
// 在外部类中,编写一个方法,可以返回 Inner对象
System.out.println("方法二:");
Outer.Inner inner1 = outer.getInner();
inner1.say();
//第三种方式
System.out.println("方法三:");
new Outer().new Inner().say();
System.out.println("==============");
}
} class Outer { //外部类 private int n1 = 10; public String name = “WTY2002”; private void hi() { System.out.println(“hi()方法…”); }
//1.注意: 成员内部类,是定义在外部内的成员位置上
//2.可以添加任意访问修饰符(public、protected 、默认、private),因为它的地位就是一个成员
public class Inner {//成员内部类
private int n1 = 66;
private double sal = 99.8;
public void say() {
//可以直接访问外部类的所有成员,包含私有的
//如果成员内部类的成员和外部类的成员重名,会遵守就近原则.
//可以通过: 外部类名.this.属性 来访问外部类的成员
System.out.println("n1 = " + n1 + " name = " + name);
System.out.println("外部类的n1=" + Outer.this.n1);
hi();
}
}
//方法,返回一个Inner实例
public Inner getInner(){
return new Inner();
}
//写方法
public void t1() {
//使用成员内部类
//创建成员内部类的对象,然后使用相关的方法
Inner Inner = new Inner();
Inner.say();
System.out.println(Inner.sal);
}
} ```