JAVA抽象类、接口继承的疑惑
我看到很多开源的代码都有这样的用处,比如有一个接口A,然后有一个抽象类B实现了接口A,然后有一个接口C继承了接口A,然后有一个抽象类D继承了B同时实现接口C。这样D就类似...
我看到很多开源的代码都有这样的用处,比如有一个接口A,然后有一个抽象类B实现了接口A,然后有一个接口C继承了接口A,然后有一个抽象类D继承了B同时实现接口C。
这样D就类似间接的实现了两次A接口,我不知道这样的用法的初衷。
请大大们解惑。
小弟感激不尽. 展开
这样D就类似间接的实现了两次A接口,我不知道这样的用法的初衷。
请大大们解惑。
小弟感激不尽. 展开
9个回答
展开全部
我觉得你不应该纠结貌似实现两次接口的问题上,其实应该还是只实现一次。
以下是我个人对抽象类和接口的理解:
接口注重的是:做什么。抽象类注重的是:是什么。
比如汽车例子。
接口A:跑。
抽象类B:普通汽车,实现接口A。
接口C:飞,继承接口A,因此接口C代表又能跑又能飞。
抽象类D:高级汽车,继承抽象类B,实现接口C。
综上所述:
普通汽车能跑。
高级汽车有喷射飞行系统,是基于普通汽车改装的,它既能跑又能飞。
如果还有一架飞机(抽象类E),飞机也能跑和飞,也可以实现接口C。
另外我觉得接口就像管道,接口A是等于是一条两种不同的东西的共同通道。
以上是我个人理解,如果有错,请各位大大指出,我是新手,勿喷。。。
以下是我个人对抽象类和接口的理解:
接口注重的是:做什么。抽象类注重的是:是什么。
比如汽车例子。
接口A:跑。
抽象类B:普通汽车,实现接口A。
接口C:飞,继承接口A,因此接口C代表又能跑又能飞。
抽象类D:高级汽车,继承抽象类B,实现接口C。
综上所述:
普通汽车能跑。
高级汽车有喷射飞行系统,是基于普通汽车改装的,它既能跑又能飞。
如果还有一架飞机(抽象类E),飞机也能跑和飞,也可以实现接口C。
另外我觉得接口就像管道,接口A是等于是一条两种不同的东西的共同通道。
以上是我个人理解,如果有错,请各位大大指出,我是新手,勿喷。。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很明显 程序类继承了D,说明程序类D是程序类B的子类,B为抽象类,说明B自身已经包含了一些成员变量和成员方法。D有实现了接口C,你要知道虽然D虽然继承了B,但B和C还是不一样的。每次的继承和实现都是因为有新的内容加入,即每个子类都有不同于父类的特性。
对于你说的 D间接实现了两次A接口,你的目标理解反了,这个设计为的是实现了不同子类的不同特性。既然D间接实现了两次A接口,但A接口只有一个,D也要实现一次接口,不存在你说的多次的问题。
对于你说的 D间接实现了两次A接口,你的目标理解反了,这个设计为的是实现了不同子类的不同特性。既然D间接实现了两次A接口,但A接口只有一个,D也要实现一次接口,不存在你说的多次的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用的手机,简单给你说一下。重写必须出现在继承中,子类中的方法名必须跟父类中的方法名相同,而且参数个数,类型也必须相同。重载出现在一个类中,一个类中可以有多个方法,但是每个方法的参数个数,类型必须不同才叫重载。覆盖是方法名相同,参数的顺序不同,个数类型也不同跟重载区别不大。不明白可以再联系我
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用接口方式继承,继承了多继承方式的强大功能,降低了多继承的复杂性,有利于设计更加健壮的系统
更加便于维护、理解、其他程序员的阅读
java中的类是不允许多继承的,而接口可以多继承,算是一点弥补,然后就是使用接口可以封装具体的实现,不向外部暴露具体的实现细节,只将接口暴露出来,用户也只能够通过接口访问,这样也有一定的安全性。
更加便于维护、理解、其他程序员的阅读
java中的类是不允许多继承的,而接口可以多继承,算是一点弥补,然后就是使用接口可以封装具体的实现,不向外部暴露具体的实现细节,只将接口暴露出来,用户也只能够通过接口访问,这样也有一定的安全性。
追问
我知道继承的好处,现在疑惑的是为什么D继承抽象类的时候抽象类已经实现了A接口,维护D又一次的实现C接口,C接口又实现了A接口,那么就是D间接实现两次A接口,这个有什么用,通畅用来解决什么问题.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询