社区
Java SE
帖子详情
关于extends和implements
Times2001
2005-03-04 03:01:02
J2SDK中,有很多是这样的结构
AbstractClassA implements InterfaceA
ClassA extends AbstractClassA implements InterfaceA
我不明白,ClassA 继承了AbstractClassA ,而AbstractClassA 又实现了InterfaceA,那ClassA为什么还有实现InterfaceA呢?不是多此一举嘛?
...全文
636
19
打赏
收藏
关于extends和implements
J2SDK中,有很多是这样的结构 AbstractClassA implements InterfaceA ClassA extends AbstractClassA implements InterfaceA 我不明白,ClassA 继承了AbstractClassA ,而AbstractClassA 又实现了InterfaceA,那ClassA为什么还有实现InterfaceA呢?不是多此一举嘛?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Times2001
2005-03-07
打赏
举报
回复
我也觉得,只是为了看文档的人更直观的了解类实现了哪些接口!
有没有人持不同意见?没有我就结帖了!
cadyboycool
2005-03-06
打赏
举报
回复
个人认为。
nwpulipeng
2005-03-06
打赏
举报
回复
同意各位大侠所说:)
star_str
2005-03-05
打赏
举报
回复
java允许单继承类,但是可以多继承接口!
jinxfei
2005-03-05
打赏
举报
回复
说强制实现接口里方法的人怎么回事,难道类签名中有implements接口就一定必须实现接口中的方法吗?
错了,只要父类有实现就可以了。
同意楼上,这样写比较直观,对于这个类的实用者来讲,比较明了,尤其是不看javadoc而直接读代码的人。
另外,我觉得这样的话也可以保证接口的稳定,比如extends的父类不再实现该接口了,子类还可以不用变更。
不知有没有道理,我估计这也是一种best practice吧.
cuilichen
2005-03-05
打赏
举报
回复
为了保证可视性吧,在使用的时候,我们可以直观的看到类继承了什么,实现了什么接口。
还有就是以防万一吧,在这里可以提醒程序员,需要做的事情。
1979xt
2005-03-04
打赏
举报
回复
习惯如此吧
birdhaha
2005-03-04
打赏
举报
回复
个人理解还是因为AbstractClassA 只实现了InterfaceA的一部分方法,而ClassA 则要实现别一部分。
Times2001
2005-03-04
打赏
举报
回复
SUN的人来这里嘛?他们设计jdk的时候为什么要这么设计啊?
说好不能打脸
2005-03-04
打赏
举报
回复
各位各位,也许小弟理解有误,或者是小弟还不够火候,不过楼上说"这样是强制重构的大哥们好像说错了"
请看以下代码:
public interface InterfaceA{
public void doSomeThing1();
public void doSomeThing2();
}
public abstract class AbstractClassA implements InterfaceA{
public void doSomeThing1(){
}
}
public class ClassA extends AbstractClassA implements InterfaceA{
public void doSomeThing2(){
}
public static void main(String[] src){
new ClassA();
}
}
此段代码可以正常运行,也就是说我不用在ClassA中强制重构doSomeThing1()这个方法,
个人认为就我现在的理解能力,这样写是多此一举
fightboy
2005-03-04
打赏
举报
回复
1.为什么要,强迫你重写AbstractClassA中的方法。什么情况下需要这么做。
2.靠Coder自律做不到么?
Times2001
2005-03-04
打赏
举报
回复
Dan1980(String someGoodAdvices):
public class ClassB extends AbstractClassA implements InterfaceA {
public void m1() { } //尽管m1已经在父类中实现了, 但仍然需要再次实现
public void m2() { } //因为再次implements了接口
}
我写成
public class ClassB extends AbstractClassA{
public void m1() { } //我直接重写这个方法啊
public void m2() { }
}
同样可以达到效果啊
Dan1980
2005-03-04
打赏
举报
回复
嗯, 这样做还是有意义的. 比如:
//InterfaceA.java
public interface InterfaceA {
void m1();
void m2();
}
//AbstractClassA.java
public abstract class AbstractClassA implements InterfaceA {
public void m1() { } //实现了m1, 但没有实现m2
}
//ClassA.java
public class ClassA extends AbstractClassA {
public void m2() { } //只实现父类中没有实现的m2就行了, 因为m1已经在父类中实现了
}
//ClassB.java
public class ClassB extends AbstractClassA implements InterfaceA {
public void m1() { } //尽管m1已经在父类中实现了, 但仍然需要再次实现
public void m2() { } //因为再次implements了接口
}
will52000
2005-03-04
打赏
举报
回复
第二种方法,强迫你重写AbstractClassA中的方法
Times2001
2005-03-04
打赏
举报
回复
欢迎大家讨论啊
BasaraTracy(不屈斗志) :
如果每个都要复写,AbstractClassA实现的方法,不就浪费了
BasaraTracy
2005-03-04
打赏
举报
回复
如果不写implements InterfaceA在类中就可以不写InterfaceA要求的方法了,但如果执行接口则必须写。个人认为是一种强制复写方法的机制,在特定的时候会有用。
Dan1980
2005-03-04
打赏
举报
回复
同意楼上, 多此一举
fightboy
2005-03-04
打赏
举报
回复
个人认为就是多此一举
Times2001
2005-03-04
打赏
举报
回复
例如
public class LinkedList extends AbstractSequentialList implements List, Cloneable, Serializable
其中AbstractSequentialList是实现了List的
java中
extends
与
implements
的区别.docx
java中
extends
与
implements
的区别.docx
public class findmin
extends
Applet
implements
ActionListener
public class findmin
extends
Applet
implements
ActionListener JavaAppliet程序,在文本框里输入三个数,显示最小数
微服务系列第七季-Java面向对象中的继承
第七季主要是给大家介绍一下Java面向对象中的继承,包括:继承的概念、为什么要继承、继承的类型及特性、
extends
关键字、final关键字、
implements
关键字、super和this关键字、子类中如何调用父类中的有参、无参构造...
TalkProgram
extends
Frame
implements
TalkProgram
extends
Frame
implements
TalkProgram
extends
Frame
implements
Java
extends
与
implements
的区别.docx
Java
extends
与
implements
的区别.docx
Java SE
62,612
社区成员
307,332
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章