1
我不完全确定如何问这个问题,但基本上我想要做的就是访问IDog的抽象方法。试想一下:接口 - 实现抽象类方法
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);
}
从我的静态无效的主要,我想能够调用dog.Speak(),但我不能,因为它不是在IDOG实现。我知道我可以很容易地从我的派生类访问Speak(),但是可以从实现中访问它,还是这会是一个糟糕的设计?
这可能是th更好的解决方案,因为它遵循良好的OOP。 –
@spender谢谢你的回答!我试图在面向对象的实践中变得更加严谨,并遇到了一个我认为这会有所帮助的问题。这是很常见的事情,因为我正在和另一位开发人员交谈,她问我为什么要这么做,好像这是一个糟糕的设计。再次感谢! – Anonymous
你能解释一下继承'Dog'继承'Speak()'的原理,因为'Dog'继承'Animal'和'Animal'实现'Speak()'? – pseudocoder