关于java:何时使用接口与Abstract类相比?

When to use interfaces compared to Abstract classes?

本问题已经有最佳答案,请猛点这里访问。

我理解这两者之间的技术差异,但我不明白为什么一个比另一个更好用?有人能给我举一个例子来帮助我区分一个优势胜过另一个吗?

例如:如果我正在做一个RPG游戏,我正在做一些治疗项目。UML图是什么样子的?我会为项目使用接口,然后修复项目或抽象类吗?


何时使用接口

接口基本上是用来继承行为的,我们知道接口只能有抽象方法。当一个类实现这个接口时,它必须实现它的所有抽象方法(除非类本身是一个抽象类),因此它按照接口定义的方式进行行为。

例如,如果希望类的行为像线程一样。您需要实现Runnable接口并重写其run()方法。

  • 我们需要继承两种或更多形式的行为。
  • 接口基本上是在我们知道要做什么的时候创建的,但是我们不知道如何做。为了简单地解释,我会说,假设有5个任务你知道必须完成。但有不同的方法可以做到这一点。任何实现它们的类都可以以它们希望的任何方式来实现它们。因此,创建一个接口并将您的方法放入其中。
  • 何时使用抽象类

    我们知道抽象类既可以有抽象的方法,也可以有具体的方法。

    同样的例子,如果您有5个任务要完成,但是对于一个任务,有一个默认的方法可以完成,那么您希望定义它的主体,并且在接口中不能这样做。

    在本例中,我们将创建一个抽象类。放置4个抽象方法和一个具体方法,这些方法将直接由其子类继承,他们不需要自己定义它。但是,如果他们愿意,他们可以覆盖它的功能。

    还要记住,一个类一次只能扩展一个抽象类。