- 作用域和外部类的其他成员一样,为整个类体,可以在外部类的成员方法中创建成员内部类对象,再调用方法。
- 成员内部类访问外部类成员(比如:属性),可以直接访问。
- 外部类访问成员内部类,访问方式为:创建对象,再访问。
- 外部其他类也可以使用成员内部类。 ```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);}
}
```

