外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();
package guanka01.test02;
public class Car {
private boolean status;
class Engine {
public void work() {
if (status) {
System.out.println("发动机飞速旋转");
} else {
System.out.println("发动机停止工作");
}
}
}
public Car() {
super();
}
public Car(boolean status) {
super();
this.status = status;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
}
////////////////////////////////////////////////////////////////////////////////////////
package guanka01.test02;
import guanka01.test02.Car.Engine;
public class Test {
public static void main(String[] args) {
Car.Engine engine = new Car().new Engine();
}
}
这种方式创建的内部类,可以正常使用外部类的成员变量,但是由于外部类是匿名的,无法更新外部类的数据。
用外部类的对象创建内部类
package guanka01.test02;
import guanka01.test02.Car.Engine;
public class Test {
public static void main(String[] args) {
Car car = new Car();
Engine engine2 = car.new Engine();
engine2.work();
car.setStatus(true);
engine2.work();
}
}
需要导包,格式为: import 外部类所在包完整形式.内部类名;
也可以不导包,用Car.Engine engine2 = car.new Engine(); 的形式
内部类和外部类是有关联的。而且car和engine2可以分别对自己的成员变量和成员方法作出一些操作。