一、实例内部类
定义在外部类内部,类体中不可以声明类变量和类方法
[外部类名.]内部类名 对象名 = new 外部类名().new 内部类名();
外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法
// 外部类
public class Body {
private String name = "鱼悠奕";
// 外部类构造方法
public Body() {
System.out.println("Body Constructor...");
}
// 实例内部类
public class Heart {
int pressure = 30; // 实例变量
// 内部类构造方法
public Heart() {
System.out.println("Heart Constructor...");
}
// 内部类成员方法
public void beat() {
System.out.println(name);
System.out.println("heart beat...");
}
}
}
// 测试类
public class Test {
// 程序入口-main方法
public static void main(String[] args) {
// 创建实例内部类对象
// 实例内部类无法独立于外部类实例而存在
Body.Heart heart = new Body().new Heart();
heart.beat();
}
}
二、静态内部类
定义在外部类内部,static
关键字修饰的类
外部类名.内部类名 对象名 = new 外部类名.内部类名();
静态内部类可以声明静态成员,只能访问外部类的静态成员
// 外部类
public class Outer {
// 外部类构造方法
public Outer() {
System.out.println("Outer Constructor...");
}
// 静态内部类
static class Inner {
int num1 = 100; // 实例变量
static int num2 = 100; // 静态变量
// 内部类构造方法
public Inner() {
System.out.println("Inner Constructor...");
}
}
}
// 测试类
public class Test {
public static void main(String[] args) {
// 创建静态内部类对象
// 静态内部类可以独立于外部类实例存在
Outer.Inner inner = new Outer.Inner();
}
}