首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接口-实现抽象类方法

接口-实现抽象类方法
EN

Stack Overflow用户
提问于 2015-04-29 17:25:30
回答 2查看 76关注 0票数 1

我不太清楚如何问这个问题,但基本上我想要做的是访问来自IDog的抽象方法。考虑到这一点:

代码语言:javascript
复制
    static void Main(string[] args)
    {
        IDog dog = new Dog();
        dog.CatchFrisbee();
        dog.Speak("Bark") // error -> no implementation
        Console.ReadLine();
    }

    public class Dog : Animal, IDog
    {
        public void CatchFrisbee()
        {
            Console.WriteLine("Dog Catching Frisbee");
        }
    }
    public abstract class Animal : IAnimal
    {
        public void Speak(string sayWhat)
        {
            Console.WriteLine(sayWhat);
        }

        public void Die()
        {
            Console.WriteLine("No Longer Exists");
        }
    }
    public interface IDog
    {
        void CatchFrisbee();
    }
    public interface IAnimal
    {
        void Die();

        void Speak(string sayWhat);
    }

从我的静态void,我希望能够调用dog.Speak(),但我不能,因为它没有在IDog中实现。我知道我可以很容易地从派生类中访问the (),但是是否有可能通过实现来访问它,或者这将是一个糟糕的设计?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-29 17:28:36

假设所有IDog都是IAnimal,则声明IDog为实现IAnimal

代码语言:javascript
复制
public interface IDog : IAnimal
票数 6
EN

Stack Overflow用户

发布于 2015-04-29 17:30:42

你可以表演一个角色:

代码语言:javascript
复制
 ((Animal) dog).Speak("Bark"); 

或者利用多接口继承:

代码语言:javascript
复制
public interface IDog : IAnimal
{
    void CatchFrisbee();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29950516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档