内部类之静态内部类
程序员文章站
2022-07-10 10:03:29
一、位置 被定义在一个类下,且被static修饰 二、结构 静态内部类下可以定义静态和非静态的属性和方法 三、静态内部类访问外部类 1.不能访问外部类非静态的属性和方法 2.调用属性【方法】方式: 2.1直接写属性名【调用方法名】 本质还是第二种 2.1外部类.属性名【方法名】 源码: 反编译源码: ......
一、位置
被定义在一个类下,且被static修饰
二、结构
静态内部类下可以定义静态和非静态的属性和方法
三、静态内部类访问外部类
1.不能访问外部类非静态的属性和方法
2.调用属性【方法】方式:
2.1直接写属性名【调用方法名】-------本质还是第二种
2.1外部类.属性名【方法名】
源码:
class outter { private static int b =3; public static void test(){ system.out.println("外部类静态方法"); } static class inner{ public void get(){ system.out.println(b);//可以访问外部静态属性 test();//可以访问外部类静态方法 } } }
反编译源码:
class outter { private static int b; public static void test() { system.out.println("\u5916\u90e8\u7c7b\u9759\u6001\u65b9\u6cd5"); } static { outter.b = 3; } static class inner { public void get() { system.out.println(outter.b); outter.test(); } } }
四、外部类访问静态内部类
class outter { private static int b =3; public static void test(){ system.out.println("外部类静态方法"); } static class inner{ private int a = 1; private static int b = 2; public void get(){ system.out.println("get"); } public static void get2(){ system.out.println("get2"); } } public static void main(string[] args) { //静态变量-方法 --方式一 system.out.println(inner.b); inner.get2(); //静态变量-方法 --方式二 system.out.println(outter.inner.b); outter.inner.get2(); //非静态--方式1 system.out.println(new inner().a); new inner().get(); //非静态--方式2 system.out.println(new outter.inner().a); } }
以上是对静态内部类的总结,有不对的地方请大家多多指点,大家共同进步!!!