父类如何访问子类属性?
public class Supclass 
{
   public int ID{ get; set; }
}public class Subclass : Supclass 
{
   public string Name{ get; set; }
}
private Subclass Son =new Subclass();
Son.Name="Test";public Supclass Father
{
   get { return Son; }
}Subclass Son1=(Subclass)Father;为什么还能得到Son1.Name="Test"?

解决方案 »

  1.   

    private Subclass Son =new Subclass();//声明的是Subclass类型
    Son.Name="Test";public Supclass Father
    {
       get { return Son; }//返回的是Subclass对象
    }Subclass Son1=(Subclass)Father;Subclass Son1=(Subclass)Father;//声明的是Subclass类型Son1是Subclass类型当然能访问Name属性...跟“父类访问子类属性”没任何关系...而且根据依赖倒置原则,父类不可以访问子类属性...
      

  2.   

    http://www.cnblogs.com/anytao/archive/2007/09/10/must_net_15.html
    如果你想弄明白,请认真研读这里这篇好文章
      

  3.   


    Subclass Son1=(Subclass)Father;为什么还能得到Son1.Name="Test"?为什么不行,本来就是子类的引用。
      

  4.   

    public Supclass Father//但这里返回的是Supclass 对象
    {
      get { return Son; }//返回的是Subclass对象
      

  5.   

    public Supclass Father//但这里返回的是Supclass 对象
    -------
    这里返回的是Supclass类型的Subclass对象...好好看书...
      

  6.   

    依赖倒置原则的2个重要方针:A. High level modules should not depend upon low level modules. Both should depend upon abstractions.
    B. Abstractions should not depend upon details. Details should depend upon abstractions.
    中文意思为:
    A. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象
    B. 抽象不应该依赖于细节,细节应该依赖于抽象
      

  7.   

      试着想一下,如果子类继承了父类的属性,父类又可以访问子类的属性...这样会乱套的....
    就象在MVC里面 BLL层调用DAL层的信息,DAL又可以访问BLL层的话.. 就不满足松散藕荷的原则了.... 
      

  8.   

    里氏替换原则LSP子类应当可以替换父类并出现在父类能够出现的任何地方,或者说如果我们把代码中使用基类的地方用它的子类所代替,代码还能正常工作。- 类的继承原则:如果一个继承类的对象可能会在基类出现的地方出现运行错误,则该子类不应该从该基类继承,或者说,应该重新设计它们之间的关系。
      

  9.   

    private Subclass Son =new Subclass();
    Son.Name="Test";public Supclass Father
    {
       get { return Son; }//这里返回的是子类型!!!!
    }Subclass Son1=(Subclass)Father;
    你看看你这里写的,你定义的是Subclass,他的Father是他的基类Supclass,你在后面又把基类型Supclass对象转换成Subclass,他就是一个Subclass类型,Subclass类当然有Name属性!,并且你在get的时候返回来的是个Subclass 类型,虽然你定义的返回是Supclass 类型,但是Subclass 是Supclass 的子类,他包含了父类的元素
    当你有三层继承的时候,你就知道这个public Supclass Father的好处了,因为你并不确定他能返回Supclass子类中的哪个类型,说的多了,有些没用的。
      

  10.   


    Supclass类型的Subclass对象?
      

  11.   

    也来揍热闹,建议lz还是多看一些oo方面的书,封装,继承,多态要先理解了