我何时应该使用接口,何时应该使用基类?
如果我不想实际定义方法的基本实现,它应该始终是一个接口吗?
如果我有狗和猫类.为什么我要实现IPet而不是PetBase?我可以理解有ISheds或IBarks(IMakesNoise?)的接口,因为那些可以基于宠物放在宠物上,但我不明白哪个用于通用Pet.
大家好,
我只是在思考抽象类和接口,我知道它们在技术上是如何工作的,但我不了解抽象类和接口的实际用途.我的意思是,当我们知道无法创建它的对象时,为什么我们应该使用抽象类,我们不得不扩展这个类来使用它,所以为什么我们不把所有东西都放在派生类中.
接口也是如此,我们必须实现接口,所以为什么我们不把接口中定义的所有方法都放在我们实现接口的类中.
有人可以用一些例子清楚我的怀疑吗?
在UML图中,何时应该抽象一个类?就在我们想要阻止实例化的时候?
编辑:抽象类是否可以完全实现一个方法(当方法只依赖于该抽象类的属性时)?
根据OOP,需要抽象类来模拟那些在现实世界中不存在的对象,但它们可以作为几个真实世界对象的基类.
例如:
BankAccount
/\
/ \
/ \
/ \
Current Savings
Account Account
Run Code Online (Sandbox Code Playgroud)
这里BankAccount应该被建模为抽象类.
但是在C#/ Java中使用抽象类的技术原因是什么?链接文字
例如:
使用Interfaces的OOP原因是对行为继承进行建模(继承没有真正的层次关系).
在C#/ Java中使用Interfaces的技术原因是为了解决多重继承的问题(如果我没有错!).