Java中有关创建内部类的讨论

外部类名称.内部类名称 对象名 = 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可以分别对自己的成员变量和成员方法作出一些操作。

你可能感兴趣的:(Java中有关创建内部类的讨论)