静态内部类和非静态内部类区别

  1. 静态内部类可以创建静态的成员,而非静态的内部类不可以,原因:内部类相当于外部类的一个属性,非静态内部类中如果可以使用静态成员,但是非静态内部类是相当于非静态成员,是在类实例化的时候才可以使用的,所以在非静态类中定义静态变量有一点多余,所以不可以这样使用。但是在非静态内部类中可以定义static final int i=1;

  2. 静态内部类只可以访问外部类中的静态成员变量与成员方法而非静 态的内部类即可以访问静态的也可以访问非静态的外部类成员方法与成员变量:原因:静态内部类可以不通过实例化,直接引用里面的属性和对象,因此,如果可以访问外部的非静态成员,则非静态成员有可能没有实例化。

  3. 静态内部类不是外部内被加载的时候就加载,而是在需要调用内部静态类的时候才会加载的。

  4. 静态内部类不能实现接口,但是非静态内部类是可以实现接口的

你可能感兴趣的:(静态内部类-非静态内)