首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于用多态访问接口步骤的疑惑

2013-07-16 
关于用多态访问接口方法的疑惑static void Main(string[] args){DerivedClass sww new DerivedClass()Ba

关于用多态访问接口方法的疑惑
       static void Main(string[] args)
        {
            DerivedClass sww= new DerivedClass();
            BaseClass sd = sww;
          //  Console.Write(sd.ToString());
            sd.DoWork();
         //   sww.DoWork();
          //  Iwangge shenme = sww;
        //    shenme.DoWork();
            
        }
    }
    public class BaseClass :Iwangge
    {
        public  void DoWork() { }
        public virtual int WorkProperty
        {
            get { return 0; }
        }
    }
    public class DerivedClass : BaseClass,Iwangge
    {
        public   void DoWork() { }
        public static void sdsss()
        { }
        public override int WorkProperty
        {
            get { return 0; }
        }}
        public interface Iwangge
        {
            void DoWork();
        }
     
}
//sd.DoWork();访问的为什么是基类中的dowork方法,他不是派生类的引用吗?


[解决办法]
基类的public  void DoWork() 不是虚方法,所以不能体现多态
[解决办法]

引用:
基类的public  void DoWork() 不是虚方法,所以不能体现多态

回答的差不多了...
基类中的方法要被重写才算是多态...
你这里就相当于:基类和派生类都各自有自己的 DoWork()方法.
其实,有一点很重要:当调用派生类的构造方法时,是先会去调用父类对应的构造方法.所以,这里不是只产生了派生类的对象.
这里主要是你没有override父类的方法....所以是基类的...

热点排行