基类变量使用派生类初始化



有人可以向我解释一下机制吗 当基类对象使用派生类初始化时会发生什么。 对象的类型是什么,对象的行为是作为基础还是派生?

对象的类型不会更改,因此该对象将表现为派生类的对象。

但由于变量的类型是基类,因此无法直接访问派生类的类成员。因此,您必须在基类中声明方法,并在派生类中重写它们以使用派生类的功能。

请注意,这仅适用于具有静态类型变量的语言,如 Java、C++、C#。

下面是 Java 中的一个简单的示例:

class BaseClass {
public void info() {
System.out.println("base class");
}
}
class DerivedClass extends BaseClass {
@Override
public void info() {
System.out.println("derived class");
}
public void specialMethod() {
}
}
public class Test {
public static void main(String[] args) {
BaseClass b = new DerivedClass();
b.info();
System.out.println("Type of b: " + b.getClass());
// not allowed:
// b.specialMethod();
}
}

这将产生以下输出:

derived class
Type of b: class DerivedClass

最新更新