编程语言
首页 > 编程语言> > java – 只有抽象方法和接口的抽象类 – 我应该使用哪个?

java – 只有抽象方法和接口的抽象类 – 我应该使用哪个?

作者:互联网

参见英文答案 > Interface vs Abstract Class (general OO)                                    33个
请注意.这个问题不是抽象类与接口类型的问题.

是.我知道.扩展抽象类的类不必覆盖所有未实现的方法.如果子类没有给它的一些父实现的未实现方法定义,那么子类也将被认为是抽象的.

但是实现接口的类应该实现其所有方法(也可以使用接口进行多重继承).

这是仅具有抽象方法的抽象类与接口之间的唯一区别吗?

是的我明白. Abstract类可以具有状态和方法实现.
但我提出的问题非常清楚.它实际上不是一个接口与抽象类的问题.

这里,在问题中,抽象类没有任何数据成员或任何方法实现.只是一些抽象的方法.
例如:

abstract class shape{
    abstract void draw();
}

我只是想知道是否还有其他差异.
在这种情况下我应该使用什么?

请帮忙.

解决方法:

我相信你的问题不一定是另一个,而是如何知道在一个实例中选择哪一个.

我喜欢考虑的一种方式是接口往往是用户可以与类接口的动作.例如,如果一个类实现了可玩的界面你知道它会有一个播放方法,无论是启动音频播放器,启动视频,还是开始游戏都取决于类本身,但你只知道它是一个可玩的类并且可以玩.

而形状不是动作,它是一种类型,形状带有属性来定义它,你需要知道颜色,大小等,以便知道某些形状.这就是为什么我会使用抽象类来定义它们共有的所有属性.

因为draw()是可以应用于形状,图像或场景的功能,所以我将其实现为Drawable接口.

例:

 public class Square extends Shape implements Drawable{

      public void draw(){
          //draw code here
      }
 }

这样,您可以定义Shape内部的所有常用属性,并提供通过Drawable接口绘制自身的功能.

标签:design-principles,java,interface,abstract-class,design-patterns
来源: https://codeday.me/bug/20190728/1559260.html