[求助]关于基础类和派生类的疑问
using System;
class Vehicle
{
public void Drive()
{
Console.WriteLine("I am driving!");
}
}
class Car : Vehicle
{
//
}
Vehicle aVehicle = new Vehicle(); ///
Car aCar = new Car(); /// (a)
aVehicle = aCar; ///
Vehicle aVehicle = new Car(); ///(b)
一、(a)和(b)的效果是不是相同?
二、那么对象的真实数据类型是什么呢?
Vehicle aVehicle = new Vehicle();//真实数据类型是Vehicle
Car aCar = new Car(); //真实数据类型是Car
Vehicle aVehicle = new Car(); //真实数据类型是不是Car?
在基础类和派生类有这样的原则:(1)只要是基础类出现的地方,都可以用该基础类的派生类代替。
(2)任何基础类和他的派生类都有相同的数据类型。
根据原则(2)对象的真实数据类型也应是相同的!但是这好像有矛盾了!
请高手们和版主们赐教! 谢谢!