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接口绘制自身的功能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |