问题描述
一个抽象类实现了某个接口,由这个抽象类派生的具体类了还实现了该接口?好处是什么?就是下面这样:interface InterfaceAA{}abstract class ClassBB implements InterfaceAA{}class ClassCC extends ClassBB implements InterfaceAA{} 问题补充:对众博友的回答进行了细致的分析,再加上自己的理解,你的回答我觉得是比较合理的。首先具体类ClassCC 不实现接口InterfaceAA是没问题的,之所以这么写就是看起来更直接,当我们想看具体类ClassCC 实现了哪个或者哪些接口时,不用沿着继承的层次结构向上找了。如果不写的话还要找其父类ClassBB ,再看父类实现了哪个或者哪些接口。我觉得就有这个好处
解决方案
首先,抽象类没有全部实现接口中的方法,只是实现了一部分.体现了抽象类的作用实现子类的共有方法其次,在继承抽象时,明确它实现的接口,对于代码理解来说,很好理解.比如:class ClassCC extends ClassBB implements InterfaceAA 说明ClassCC不用实现InterfaceAA中的全部方法,因为ClassBB已经实现了一部分更能精确的表达语义
解决方案二:
class ClassCC extends ClassBB implements InterfaceAA 抽象类都已经实现接口了 它的子类就没必要显示实现相同的几口了 多余
解决方案三:
一个抽象类能实现一个接口吗? 要实现一个接口不是要实现它的所有方法吗?而抽象类不是可以有部分实现吗(也就是有些方法可以不实现) 我怎么感觉好像不行啊! 如果是有InterfaceA AstractClassB 和具体类ClassDemoC 倒是可以写成public class ClassDemoC extends AstractClassB implements InterfaceA{ //.....}那位能给我解惑一下?
解决方案四:
class ClassCC extends ClassBB implements InterfaceAA 与class ClassCC extends ClassBB 两种写法没啥区别,只是前者看起来清晰,楼上几位同志的解释好像是针对class ClassCC extends ClassBB implements InterfaceAA与class ClassCC implements InterfaceAA 二者的比较
解决方案五:
我来告诉你,这样在可以提高代码的可扩展性、比如:以后要业务功能需要改动、升级的时候 直接在基类里面增加一个方法、所有子类都可以共用
解决方案六:
哦,不好意思,我刚刚查了,抽象类是可以不实现接口的所有方法的,因为以前没这样用过。所以说你这样写是没错的。 那么,我想要是你这样写的话,我觉得应该是父类不想让其所有子类都实现某些个方法,所以让其需要实现这些个方法的子类再去实现该接口,这样这个子类就可以实现别的子类不用实现的方法了吧,我想应该是这样的,要是所有的子类都从新实现该接口的话,那么就没有意义了,直接到父类把所有方法都实现不就完了嘛,你觉得呢?呵呵,我只是一菜鸟,所有如果说的不对,请不要见怪,呵呵,光棍节快乐。
解决方案七:
这个没意义,因为父类已经实现了该接口,实现了该接口,就必须实现改接口中定义的所有方法,既然你的父类中实现了该方法,那么子类再实现该接口后,当你重写父类中的方法时,便会报错。方法重名了,但是又构不成方法的重载,因为两个方法都是实现于同一个接口,参数都相同。所以说这是个没有任何意义的事。 我们面向接口编程,最主要的好处就是,在接口中没有方法的实现,所以当我们创建实现了该接口的实现类的对象时,我们把接口做为对象的类型,然后实现类作为具体new出来的对象,那么就很好的提高了代码的安全性,只可以在接口中找到方法的定义,根本就找不打方法的具体实现,这就是最大的好处之一。
解决方案八:
好处是看着清晰明白,其实写不写一样