我在同一个包中有以下3个类:
class Machine {
protected int id;
public Machine(int i) {
id = i;
}
public void start() {
System.out.println("Machine " + id + " starting.");
}
}
class Car extends Machine {
protected int id;
public Car(int i) {
super(i);
id = i;
}
public void start() {
super.start();
System.out.println("Car " + id + " starting.");
System.out.println("I can access parent variable" + super.id);
}
}
public class Application {
public static void main(String[] args) {
Machine machine = new Machine(2);
Car car = new Car(3);
car.start();
machine.start();
machine = car;
machine.start();
}
}
我现在有几个问题。如果我不再有意义,请告诉我,我会尝试改写自己。
答案 0 :(得分:1)
1.保护数据成员只能访问购买聚合类。 没有想法。 这是动态绑定的一个例子。这包含opps功能,其中父需要显式转换以指向聚合类。
答案 1 :(得分:0)
2)为操作分配内存时,不存在超类和子类的概念。 Java查看字段和实例所需的内存。它将查看Machine
的实例并为int id
分配内存,然后查看Car
的实例,看到内存已经在父级中分配,并简单地分配价值。
如果您的Car
班级有一个标有number
和id
的字段,那么内存将分配给两个字段。