Java为什么使用静态内部类?

来源:互联网 发布:淘宝仓库配货员招聘 编辑:程序博客网 时间:2024/04/30 07:56

今天看项目,发现一块很奇怪的代码。

public class Outer{

 int id;

 public static class Inner{

int id;

}

}

不是说Java一个文件里,只能有一个声明为public的类吗?而且类名必须和文件名相同。

这就是个例外——静态内部类。

 java允许我们在一个类里面定义静态类。比如内部类(nested class)。把nested class封闭起来的类叫外部类。在java中,我们不能用static修饰顶级类(top level class)。只有内部类可以为static。

     静态内部类和非静态内部类之间到底有什么不同呢?下面是两者间主要的不同。

    (1)内部静态类不需要有指向外部类的引用。但非静态内部类需要持有对外部类的引用。

    (2)非静态内部类能够访问外部类的静态和非静态成员。静态类不能访问外部类的非静态成员。他只能访问外部类的静态成员。

    (3)一个非静态内部类不能脱离外部类实体被创建,一个非静态内部类可以访问外部类的数据和方法,因为他就在外部类里面。

基于上面的讨论,我们可以通过这些特性让编程更简单、有效。


0 0
原创粉丝点击