石小疯 发表于 2025-4-3 09:38:03

java 静态内部类

文章同步更新(更好的排版):
java 静态内部类
一、位置

位于类的内部。相当于用 static 修饰的成员内部类。此时的内部类不再受到外部类实例化对象的影响,以是等同于是一个 “外部类”。静态内部类的类名为:外部类类名.静态内部类类名
二、特点


[*]静态内部类可以被任何访问修饰符举行修饰
[*]静态内部类不能直接访问外部类的非静态实例属性和方法,但可以访问静态的属性和方法
[*]静态内部类可以包含静态成员
[*]静态内部类中的属性,与外部类的属性同名时,静态内部类则必要使用 外部类类名.外部类属性名称 访问外部类的属性
三、静态内部类的实例化

//可以不依赖外部类的对象,通过外部类名直接访问
外部类类名.内部类类名 内部类对象名 = new 外部类类名.内部类类名();
四、代码示例一:演示特点一

https://i-blog.csdnimg.cn/img_convert/277bfe3a685ac06132f8c93b75ad63ec.png
public class StaticOuter {
    //静态内部类
    static class Inner01{}
    public static class Inner02{}
    protected static class Inner03{}
    private static class Inner04{}
}
五、代码示例二:演示特点二

https://i-blog.csdnimg.cn/img_convert/e70ea8a8c66fa63400ebcf5f16663820.png
public class StaticOuter02 {
    //静态内部类不能直接访问外部类的非静态实例属性和方法,但可以访问静态的属性和方法
    //外部类的非静态成员属性
    private String name = "公众号:牧牧川";

    //外部类的静态成员属性
    static private int age = 18;

    //静态内部类
    static class Inner{

      //静态内部类的成员方法
      public void show(){
            System.out.println(name);
            System.out.println(age);
      }
    }
}
六、代码实例三:演示特点三

https://i-blog.csdnimg.cn/img_convert/353bf430d7222c815e5b375fe10339f3.png
public class StaticOuter03 {
    //静态内部类
    static class Inner{
      //静态内部类 能包含静态成员
      private static String name = "公众号:牧牧川";
      public static void test(){}
      private static final int a = 1000;
    }
}
七、代码实例四:演示特点四

https://i-blog.csdnimg.cn/img_convert/36c5a51f1d4dc7a5e113035b417ac2d9.png
public class StaticOuter04 {
    //外部类的静态成员属性
    private static String name = "Tom";

    //外部类的成员方法
    public void show(){
      System.out.println("名字为:"+ name);
    }

    //静态内部类
    static class Inner{

      private String name = "GGBond";

      public void show(){
            String name = "jack";

            System.out.println("方法中的局部变量 name:" + name);
            System.out.println("内部类的实例属性 name:" + this.name);
            //静态内部类中的属性,与外部类的属性同名时,内部类则需要使用 外部类类名.外部类属性名称 访问外部类的属性
            System.out.println("外部类的实例属性 name" + StaticOuter04.name);

      }
    }
}
https://i-blog.csdnimg.cn/img_convert/a712bd8e12cb8d2ff8bbd81b80adf922.png
public class TestStaticOuter04 {
    public static void main(String[] args) {
      //外部类的对象
      StaticOuter04 staticOuter04 = new StaticOuter04();
      staticOuter04.show();

      //静态内部类的实例化
      //外部类类名.内部类类名 内部类对象名 = new 外部类类名.内部类类名();
      StaticOuter04.Inner inner01 = new StaticOuter04.Inner();
      inner01.show();

    }
}
https://i-blog.csdnimg.cn/img_convert/1a1ce68be311949cc1a8afb33bb244fc.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: java 静态内部类