2,静态内部类
- 成员内部类的基础上加上static修饰,与外部类同级别。
- 不依赖外部对象,可直接创建或通过类名访问,可声明静态成员。
- 无法直接调用外部类属性,要用对象调用。
- 编写一个内部类Outer,在Outer内编写一个内部类Inner
package innerclass.staticinnerclass; //外部类 public class Outer { private String name = "威武"; private int age = 18; //静态内部类(在成员内部类前加static),与外部类同等级。 //static修饰的,外部类加载时会同时加载。 public static class Inner{ private String address = "北京"; private static int phone = 110;//可以定义静态成员变量 public void say(){ //如何调用外部类属性 //无法直接调用外部类属性,要先new一个对象,用对象调用 Outer outer = new Outer(); System.out.println(outer.name);//System.out.println(new Outer().name); System.out.println(new Outer().age); //如何调用内部类属性 //直接调用 System.out.println(this.address);//可省略this System.out.println(Inner.phone);//可省略Inner } } }
- 编写一个测试类Test
package innerclass; import innerclass.staticinnerclass.Outer; public class Test{ //静态内部类测试 public static void main(String[] args) { //静态内部类可直接new对象 Outer.Inner inner = new Outer.Inner(); inner.say(); } }
- 输出
- 注意
1,只有内部类可以是静态的。
2,在类被加载的时候,就会去加载被static修饰的部分,故静态内部类与外部类同级别。