-2
有人可以解释我的机制当基类对象使用派生类初始化时会发生什么。什么是对象的类型,对象是作为基础还是派生的?基类变量使用派生类初始化
有人可以解释我的机制当基类对象使用派生类初始化时会发生什么。什么是对象的类型,对象是作为基础还是派生的?基类变量使用派生类初始化
对象的类型不会更改,因此该对象将表现为派生类的对象。
但由于变量的类型是基类,因此不能直接访问派生类的类成员。因此,必须在基类中声明方法并在派生类中重写它们以使用派生类的特征。
请注意,这仅适用于静态类型变量(如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
如何编写代码和调试自己呢? –
“基类对象使用派生类初始化”或_base类引用使用派生类object_初始化? –
我认为这个问题对于网站来说过于宽泛 - 因为它可能涉及一些公正的解释。 –