日期:2014-05-17  浏览次数:20842 次

调基类的函数
    public class A
    {
        public virtual void Base()
        {
            Console.WriteLine("A");
        }
    }
    public class B : A
    {
        public override void Base()
        {
            Console.WriteLine("B");
            base.Base();
        }
    }
    public class C : B
    {
        public override void Base()
        {
            Console.WriteLine("C");
            base.Base();
        }
    }

当我NEW B时,调用函数Base            
C c = new C();
c.Base();
怎么才能不调用类开的函数,得到如下结果.
 Console.WriteLine("C");
 Console.WriteLine("A");

------解决方案--------------------
引用:
 Console.WriteLine("C");
 Console.WriteLine("A");


既然你要的结果是这个,为什么不 C:A?
------解决方案--------------------
面向对象编程,是因为面向对象系统分析和设计方法原本就是这样规定的。而后者,是为了达到与实际领域知识相一致,让不懂编程的人也看得懂,可以理解。

继承是有设计意义的。不是为了你能够少些一两行Base()里边的代码的。如果你为了少写几行代码而用继承,这就是典型的“滥用继承”。你做出的设计在别的懂得面向对象分析设计的工程师看来,只能是不断爆出诡异的结果来。
------解决方案--------------------
实现一个C->A的转换代码,然后直接去调用:

    public class A
    {
        public virtual void Base()