类与接口

har*_*nto 13 c# java oop

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

我们什么时候应该决定为特定类使用Interface还是Class?

例如:说我们有2个班,客户和博士.

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

我们不能对Interface做同样的事吗?说我们有InterfacePerson并且Customer和Doctor都实现了接口吗?

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

Boz*_*zho 14

  • 阅读维基百科文章

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

  • 在您的示例中,Person应该是一个类,因为它包含a 和a 共有的实现细节.DoctorCustomer

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

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

class Doctor implements Comparable {..}

class Customer implements Comparable {..}
Run Code Online (Sandbox Code Playgroud)

现在你可以有一个通用方法,它接受任何实现Comparable和调用的对象集comparable1.compareTo(comparable2),因为你知道它们可以执行比较 - 它由它们的接口表示.


mar*_*lai 11

  • 界面 - 描述行为
  • 类 - 做行为

扩展另一个类的类继承该行为.另一方面,实现一个接口只是说它需要表现那样,但是类仍然必须知道如何操作.

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

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

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


Adr*_*der 10

接口用于强制执行某些方法/属性.简而言之,界面是一组规则.

类可用于继承/覆盖基本功能.

看一下