为什么用继承类,无法覆盖父类继承的接口函数?

.Net技术 码拜 9年前 (2016-01-31) 879次浏览
我有下面一个小例子。我希望B类型继承自A,同时能实现自身的F函数。但是编译有warning说是F会隐藏接口函数

    public interface IMy
    {
        void F();
    }
    public class A : IMy
    {
        public void F()
        {
            Console.WriteLine("A");
        }
    }
    public class B : A
    {
        public void F()
        {
            Console.WriteLine("B");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            IMy my = new B();
            my.F();
        }
    }

我不想用所谓的explicit interface implementation,就像在main函数里面使用常见的多态。这个程序打印的是A而不是我想要的是B。怎么才能让B实现接口定义的F函数呢?
谢谢

解决方案:10分
       public class A : IMy
        {
            public virtual void F()
            {
                Console.WriteLine("A");
            }
        }
        public class B : A
        {
            public override void F()
            {
                Console.WriteLine("B");
            }
        }
解决方案:10分
接口在父类已经实现了,所以子类不需要再实现
解决方案:10分
接口哪有继承的说法
要么是你自己想象的,或者是理解有问题。
解决方案:20分
virual override new这三个关键字在方法名前面分别代表什么含义好好查查

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明为什么用继承类,无法覆盖父类继承的接口函数?
喜欢 (0)
[1034331897@qq.com]
分享 (0)