加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 04:26:26 所属栏目:Java 来源:网络整理
导读:参见英文答案 Interface vs Abstract Class (general OO)????????????????????????????????????33个 请注意.这个问题不是抽象类与接口类型的问题. 是.我知道.扩展抽象类的类不必覆盖所有未实现的方法.如果子类没有给它的一些父实现的未实现方法定义,那么子类
参见英文答案 > 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接口绘制自身的功能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读