java静态内部类及非静态内部类

  • 在非静态内部类中不可以声明静态成员变量及方法,静态内部类可声明静态及非静态成员变量及方法
  • 非静态内部类,可以随意的访问外部类中的成员变量与成员方法,即使这些成员方法被修饰为private
  • 不能够从静态内部类的对象中访问外部类的非静态成员(包括成员变量与成员方法)
  • 创建静态内部类时不需要将静态内部类的实例绑定在外部类的实例上,而非静态内部类必须绑定在外部类的实例上

内部类的声明关键字同其它成员变量的声明关键字,如若内部类声明为protected,则当前类,同包,子类可创建及使用该内部类,而其它类则不可访问;内部类中的声明同理

// 非静态内部类
Student s = new Student();
Child c = s.new Child();
// 静态内部类
Student s = new Student();
Child c = new Child();