【发布时间】:2017-02-15 19:13:31
【问题描述】:
我一直在阅读有关接口编程而不是实现的内容。我没有正确理解的一个领域是如何处理非接口方法。例如一个接口 IAnimal 和一个实现它的 Cat 类。我的示例是用 C# 编写的,但我认为它也应该适用于其他语言。
public interface IAnimal
{
void Eat();
}
public class Cat : IAnimal
{
public Cat()
public void Eat()
{
//Do something
}
public string Meow()
{
return "meow";
}
}
从我读到的内容看来,我应该尝试使用接口而不是 cat 实现,例如,
Main()
{
IAnimal cat = new Cat();
}
但这让我无法访问我的 meow 方法,因为它不是 IAnimal 接口的一部分。我应该创建另一个实现 IAnimals 的接口 ICat 并让 Cat 实现它吗?这是否意味着所有方法都应该是接口或抽象类的实现?还是我在这里做错了什么。
感谢您的帮助。
【问题讨论】:
-
您能否在界面中添加一个更通用的方法,可能是
string speak().?然后无论哪个类实现它都可以有自己的消息。 -
完全不会说话的类鱼怎么办?
-
然后它可以返回一个空字符串。或者是没有声音的指示器。
-
或者会说话的动物可以实现
ITalkingAnimal。 -
所以从 cmets 看来,您似乎是在提倡将所有方法包含在相关接口中,而不是像示例中那样留下任何方法?
标签: c# oop interface abstract-class