假设白马是马
即,白马 is a 马
亦即,
public class 马
public class 白马 : 马由假设,声明一个变量
白马 a=new 白马();
(a as 马).颜色=黑;a是白马,a的颜色怎么能是黑的呢?矛盾出现了,所以假设不成立,白马不是马
那它们是什么关系呢?应该是这样public interface 马
public class 白马 : 马
现在“马”是不能有属性的,(a as 马).颜色也就无从谈起了
即,并非白马 is a 马,而是“白马 performs as a 马”当然,它们的关系还可以有其它方案,比如[马]
public class 白马:object或者[白]
[马]
public class 白马:object或者
public class 马
public class 白马:object
{
    private 马 m_马=new 马(白);
}

解决方案 »

  1.   

    楼主高见!===================================================================
    中国DotNet程序员俱乐部 -- www.willsft.com -- 中国最专业的DotNet技术社区!DotNet技术支持群: 3354034
    34857327 、24694039、19055417、2684939、1621937、37718551、25570926 
    ===================================================================
      

  2.   

    白马 : 马
    意味着白马的颜色属性==白
    而这个属性应该是只读的!就像人生下来头发是黑的就是黑的,外面染成黄的,其实还是黑的!白马没有理由将颜色设置成白以外的颜色!除非有另外一个属性,类似于:“外观色”。
    高手有空帮忙看下这个困难问题帖子!!谢谢!
    http://community.csdn.net/Expert/topic/5684/5684900.xml?temp=.9734461
      

  3.   

    这个假设本就不成立嘛.(a as 马).颜色=黑; 这个本身就有违语法问题.不成立.
      

  4.   

    白马 a=new 白马();
    (a as 马).颜色=黑;a是白马,a的颜色怎么能是黑的呢?矛盾出现了,所以假设不成立,白马不是马
    那它们是什么关系呢?应该是这样
    -----------------------------今天再想一下,其实这个没错,而且假设也成立,脱离现实的话.白马生出来是白色,但如果硬是将其改成黑色,也没错.因为白马未必一定是白色.后天的强硬更改,将白马设成黑色也行,就像如果你是小明,如果天下人都硬是将你的名字改成小红,那叫小红也没错,但小明其实与小红等于一个人,即小明=小红.上述也是,强制改变后,白马=黑马.