我只知道override,是覆盖。
大家来帮忙啊。

解决方案 »

  1.   

    你说错了,new重写是实现了隐藏,而virtual/override则是重写。
      

  2.   

    new重写是实现了隐藏
    virtual声明以后, 可以覆写, 这是面向对像的基本要求, 
    怎么说叱,我觉得你还是看一下关于面向对像方面的书吧, 这样有好处,
      

  3.   

    比如,你的产品中有一个别人写的基类hisBaseClass,又有一个派生类myDerivedClass,派生类中有一个基类中没有的方法myMethod()。现在基类的作者要重写基类,他为其基类同样添加一个myMethod,但实现的功能和你的myMethod不一样。此时,你就应该使用new定义你的myMethod()方法,以避免将来的代码上所存在的潜在的冲突。
      

  4.   

    基类用virtual 定义的方法,子类就可以用override对该virtual方法进行重写.基类的成员(private/public)方法,子类如果也有同样的方法,系统则默认子类方法将基类方法隐藏.一般情况下,对于子类来说,使用没有什么区别.
    但是在以下情况下,就会有差异:
    基类hisBaseClass
    private myMethod()
    子类myDerivedClass
    private new myMethod()1.hisBaseClass myClass1 = new myDerivedClass();
    当使用该方法进行实例化myClass1时,再使用myCLass1.myMethod();
    则,系统默认调用的是hisBaseCLass的的myMethod()方法.2.myDerivedClass myCLass1 = new myDerivedClass();
    当使用该方法进行实例化myClass1时,再使用myCLass1.myMethod();
    则,系统默认调用的是myDerivedClass的myMethod()方法.
      

  5.   

    基类hisBaseClass
    private virtual myMethod()子类myDerivedClass
    private override myMethod()1.hisBaseClass myClass1 = new myDerivedClass();
    当使用该方法进行实例化myClass1时,再使用myCLass1.myMethod();
    则,系统默认调用的是myDerivedClass的myMethod()方法.2.myDerivedClass myCLass1 = new myDerivedClass();
    当使用该方法进行实例化myClass1时,再使用myCLass1.myMethod();
    则,系统默认调用的也是myDerivedClass的myMethod()方法.
      

  6.   

    rices() 
    谢谢你的详细解答了