A3类由A2类派生
A2类由A1类派生
都有方法pdMethod现在由A3类派生出一个A4类,想让pdMethod方法由A1类派生,也就是说pdMethod方法不执行A2类和A3类中定义的pdMethod方法中的代码?

解决方案 »

  1.   

    除非A4类直接继承A1类
    如果你只想要A1类的pdMethod()和A2,A3类的其它方法
    那你直接从A1继承,重定义一个类MIDA。在MIDA类中不要修改A1类的pdMethod(),然后把在类A2和类A3中你想要的方法加到MIDA类中
    除非不得以,这个方法不是个好方法。。
      

  2.   

    里氏替换原则?还没听说过,汗,赶忙搜索一下,大致了解了一下,算是明白了,我有不同于meiqingsong(阿飛)的看法>>现在由A3类派生出一个A4类,想让pdMethod方法由A1类派生,
    >>也就是说pdMethod方法不执行A2类和A3类中定义的pdMethod方法中的代码?并不一定违反这个所谓的里氏替换原则,对于a4的pdMethod来说,不论执行不执行a3.pdMethod的内容,也不论它实际执行了什么,
    只要它的pdMethod在语义上等价于a1的pdMethod的定义,那么,a4.pdMethod的实现就没有违反原则,
    或者说a4继承祖先定义的接口,但是它可以不继承祖先的实现(a4自己另外实现),就像接口那样工作因此a4.pdMethod只调用a1.pdMethod而忽略a2/a3的相应方法是不违反原则的,如果这样也违反原则的话,那么就无所谓重载了
      

  3.   

    为什么A4类不直接从A1类继承呢?这样就可以继承A1的pdMethod方法.
      

  4.   

    因为A4还要继承一些A2,A3里边的方法和属性.
      

  5.   

    TO:alphax(无之心)您有什么好的方法可以实现吗?谢谢.
      

  6.   

    其实你也可以直接在A4类中重定义一个pdMethod方法,在A4中定义的pdMethod方法和A1中定义的pdMethod方法在名称和参数上都一样,然后把A1中pdMethod方法的内容COPY到A4中的pdMethod之中,   但是在申明pdMethod方法的后边不要加上override,这样A4的pdMethod方法就相当于从A1中直接继承了
      

  7.   

    没有测试但估计可行:在A4的pdMethod方法的实现中用TA1(self).prMethod替换inherited
      

  8.   

    这样A4的pdMethod方法就相当于从A1中直接继承了
    这句话有错,应该改为:
      在A4中的pdMethod把它的祖先类中的pdMethod方法都替换了
    所以在A4中使用pdMethod方法就相当于直接使用A1中的pdMethod方法不过我也是在D3书上看到是这样说的
    不知道行得通不,我自己也没有试过
    如果你实在找不到其它方法的话可以试试这种办法
    看是否可行
      

  9.   

    基本同意alphax(无之心)我想说得是
    重载和多态是不同的
    重载是OverLoad,不属于OO范畴
    多态覆盖通过Override实现……