Java 与抽象类相比,何时使用接口?

Java 与抽象类相比,何时使用接口?,java,Java,我理解两者之间的技术差异,但我不明白为什么一个比其他更好用?有谁能给我举个例子,帮助我区分一个比另一个更有优势 例如:如果我在做一个rpg游戏,我在做一些治疗项目。uml图是什么样子的。我会为项目使用接口,然后修复项目或抽象类。何时使用接口 接口基本上是用来继承行为的,因为我们知道接口只能有抽象方法。当一个类实现该接口时,它必须实现它的所有抽象方法(除非该类本身是一个抽象类),因此它按照接口定义的方式进行行为 例如,如果希望类的行为像线程一样。您需要实现Runnable接口并重写其run()方法

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

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

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

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

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

    同样的例子,如果你有5个任务要做,但是对于一个任务,有一个默认的方法要做,所以你希望定义它的主体,而你不能在接口中这样做

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


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

    当您是项目经理时使用接口,当您是团队领导时使用抽象类:)我不知道真正的区别。但重要的是,任何类都只能扩展一个类,但它可以实现更多接口。所以应该根据需求来决定。对不起,你是说接口基本上应该是层次结构的顶端,比如字符?然后子类将是抽象的,比如敌人或玩家?这对你也有帮助。