概述
Java允许在一个类被定义在其他类的内部。这样的类叫做内部类。很多程序员都知道,类可以是静态的。Java支持静态的实例变量,静态方法,静态代码块和静态类。内部有嵌入类的被定义的类叫做外部类。
一个内部类的实例是不能离开外部类的实例而被创建。因此,一个内部类的实例可以访问它的外部类的所有成员,而不需要借助外部类实例的引用。由于这个原因,内部类能够帮助我们让程序更简洁明了。
静态与非静态内部的区别
- 静态的内部类可以脱离外部类的实现化而单独实例化
- 非静态的内部类可以访问外部类的静态和非静态成员。静态的内部类只能访问外部类的静态成员。
示例如下:
1、定义一个MeritStudent的类,它包含两个内部类,一个是非静态的,一个是静态的,代码如下:
public class MeritStudent {
static String NAME = "XiaoMing";
int STUDENT_NO = 22;
public void hello(){
Person person = new Person();
Student student = new Student();
System.out.println("hello," + person.personName + ", my student-no is " + student.studentNo);
}
class Student {
//学号
private int studentNo = STUDENT_NO;
}
static class Person {
//姓名
private String personName = NAME;
}
}
2、编写测试代码
public class Test {
public Test(){
MeritStudent a = new MeritStudent();
a.hello();
}
public static void main(String[] args) {
new Test();
}
}