Java静态内部类(全面详解)

Java静态内部类

静态内部类是指使用 static 修饰的内部类,示例代码如下:

/**
*我是一个外部类(外部是相对内部而言)
*/
public class Outer {
 static class Inner {
 // 静态内部类
 }
}

 

Java静态内部类的作用

1)内部类提供了更好的封装,除了该外围类,其他类都不能访问。

2)用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类,所以没有必要专门用一个Java文件存放这个类。

3)内部类成员可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,但外部类不能访问内部类的实现细节,例如内部类的成员变量。

4)匿名内部类适合用于创建那些仅需要一次使用的类。

 

Java静态内部类的使用示例

我们来看一个例子,这样可以更好的理解Java静态内部类的使用。

public class Outer {
    private static String s1 = "this is s1 in Outer";
    private static String s2 = "this is s2 in Outer";
 
    public void method1() {
        // 外部类可通过内部类的对象调用内部类的私有成员变量或方法
        System.out.println(new Inner().s1);
        System.out.println(new Inner().method2());
    }
 
    private static String method2() {
        return "this is method2 in Outer";
    }
 
    // 内部静态类
    public static class Inner {
        private String s1 = "this is s1 in Inner";
        private static String s3 = "this is s3 in Inner";
 
        public void method1() {
            // 内部类可直接访问外部类的私有静态成员变量或方法
            System.out.println(s2);
            // 内部类和外部类有同名变量和方法时
            System.out.println(s1);
            System.out.println(Outer.s1);
            System.out.println(method2());
            System.out.println(Outer.method2());
        }
 
        private String method2() {
            return "this is method2 in Inner";
        }
    }
}

结果如下:

------外部类测试--------
this is s1 in Inner
this is method2 in Inner
------内部类测试--------
this is s2 in Outer
this is s1 in Inner
this is s1 in Outer
this is method2 in Inner
this is method2 in Outer

 

总结

1、静态内部类的方法只能访问外部类的static关联的信息;

2、创建静态内部类方式:外部类.内部类 引用=new 外部类.内部类();

3、静态内部类访问外部类的静态成员变量或方法必须是静态的;

4、静态内部类中可定义静态的成员变量和方法;

5、静态内部类可以独立存在,不依赖于其他外围类。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法