Java中普通的顶级类是不能使用static关键字修饰的,只有内部类可以使用static修饰。即:
// 顶层类A不能用static修饰 public class A { // 普通内部类B, 可以不用static修饰 public class B { } // 普通内部类C,也可以用static修饰 public static class C { } }
普通的内部类(public class)和 静态内部类(public static class)区别?
1、静态内部类(static修饰的内部类)没有对外部类的引用,所以静态内部类只能访问外部类的静态属性或方法。并且在初始化的时候可以单独存在,例如:
StaticClass staticClass = new StaticClass();
或者:
Users.StaticClass staticClass2 = new Users.StaticClass()
二种方式初始化,建议使用第二种初始化方法,比较清晰。
2、普通内部类有对外部类的引用,所以普通内部类不能独立存在,初始化的时候必须通过外部类的实例。
并且普通内部类可以直接访问外部类的普通属性和函数(包括私有的属性和函数)同时也能访问外部类的静态属性和函数。
普通内部类的实例化如下:
Users.CommonClass commonClass = new Users().new CommonClass();
或者:
Users users = new Users(); Users.CommonClass commonClass2 = users.new CommonClass();