不懂你问的是什么。假设有一个“苹果”类型,它是从“水果”继承的(或者实现了“水果”接口),那么一个香蕉a它也就是水果a。严格地说,什么叫做子类对象和父类对象?其实对象就是对象,它的本质并不是类型。对象具有类型。例如我们首先说我们有一个对象a,然后才知道它具有“苹果”类型,然后又知道它具有“水果”类型,然后又知道它还有“单糖”类型,然后又知道它具有“商品”类型,最后还又知道它对于我们的客户来说还具有“打折商品”类型.......对象不变,一个个体还是它自己,但是我们理解它的类型是随时可变的!因此你也可以写:object x=new 香蕉;
水果 a=(水果)x;
商品 b=(商品)x;
.......这个香蕉x就是水果a,就是商品a。以为对象x内部有一部分引用一个水果对象、又有一部分引用了一个商品对象......在某些学c++走火入魔的人那里总是那么理解,如果设计:   public class 香蕉: 水果{...}有些人总是认为一个香蕉里边有一个private变量指向了一个水果对象,这是极端错误的理解。一个香蕉对象就是一个水果对象,对象还是同一个,只不过我们可以给x和a两个变量声明不同的类型来指向同一个对象。

解决方案 »

  1.   

    这个香蕉x就是水果a,就是商品a   -->   这个香蕉x就是水果x,就是商品x只不过,我们用声明为水果类型的变量a来引用x,又用声明为商品类型的变量a来引用x。不要因为声明的类型变了,就不认得马甲下面这个东西了。
      

  2.   

    如果在现在有一个变量声明为“水果”的类型a,假设你认为她是一个香蕉,那么你就可以写:香蕉 b=(香蕉)a;
    打折商品c=(打折商品)a;甚至声明为你认为它具有的一些纯粹计算机领域的接口或者父类,例如:IDisposable d=(IDisposable)a;
    IRecreation e=(IRecreation)a;没有任何问题,它们都指代同一个对象。
      

  3.   

    答一:
    可以,但是只能子类转父类
    子类继承父类,就是Is A的关系~
      

  4.   

    这个问题并不简单,先MARK一下....