none
父类能否调用子类override的方法? RRS feed

  • 问题

  • 父类是个虚类,假设

        abstract class AAA
        {
            public void method()
            {
                //do something
            }
    
            public void doMethod()
            {
                method();
            }
        }

    然后有个子类继承他:

        abstract class BBB: AAA
        {
            new public void method()
            {
                //do something
            }
        }


    我通过这样的方法进行调用:

    AAA a = new BBB();
    a.doMethod();

    结果是调用了AAA的method方法,而不是子类BBB覆盖后的method方法。

    是否可以像这样的调用,即子类没有覆盖父类的方法时 调用父类方法,如果覆盖则调用子类方法。

    这个例子中,我尝试把doMethod方法移到子类中,则可以满足要求。

    但是由于这是一个公共方法,如果不写在父类中,那么他的每个继承类都要写这么一句,很不利于后期的维护,是否有变通的方法呢?

    2015年5月21日 9:06

答案