类与接口

2022-09-02 23:18:57

我有一个非常基本的问题:

我们什么时候应该决定对特定类使用接口或类?

例如:假设我们有2个类,客户和医生。

在继承(类)中:我们可以将这 2 个类设置为从父类 Person 继承。

难道我们不能对界面做同样的事情吗?说我们有 InterfacePerson,并且客户和医生都实现了这个接口?

因此,这导致:我们何时决定使用一个而不是另一个,反之亦然?


答案 1
  • 阅读维基百科文章

  • 读一本书,然后再次阅读有关 OOP 的章节

  • 在您的示例中,应该是一个类,因为它包含 a 和 .PersonDoctorCustomer

  • 接口没有(也不需要)实现细节 - 它们只表示实现它们的对象正在做什么。不是怎么回事。为什么这很有用?因为当你使用对象时,你并不关心它将如何完成它的工作。

让我们看一个简单的例子 - 有一个接口(至少在Java中)。它表示其实现者可以相互比较。因此,您可以有两个类:Comparable

class Doctor implements Comparable {..}

class Customer implements Comparable {..}

现在,您可以拥有一个通用方法,该方法采用实现和调用的任何一组对象,因为您知道它们可以执行比较 - 它由它们的接口表示Comparablecomparable1.compareTo(comparable2)


答案 2
  • 接口 - 描述行为
  • 类 - 执行行为

扩展另一个类的类将继承该行为。另一方面,实现一个接口只是说它需要以这种方式运行,但类仍然必须知道操作方法。

除了单个继承限制之外,使用接口的代码更容易重构和测试,例如,在单元测试中为数据库访问对象提供模拟实现。

所以,真正的答案是,这取决于你的设计。

可能是使用接口来描述行为,并使用抽象父类来实现可由子类继承的行为。或者,也许子类是如此不同,以至于每个子类都以自己的方式实现接口。