java为什么要定义接口

“当一个类实现一个借口时,它必须实现接口中定义的所有方法”。这个是教材上面说的,那么为什么要定义一个接口呢,所有的方法不都是在类中实现的吗,只不过在类中把接口中的方法头部... “当一个类实现一个借口时,它必须实现接口中定义的所有方法”。这个是教材上面说的,那么为什么要定义一个接口呢,所有的方法不都是在类中实现的吗,只不过在类中把接口中的方法头部照抄一遍罢了?
意思就是为什么要用类去实现只有方法头部而没有方法体(一个空壳)的接口
展开
 我来答
JarodYv
2008-07-06 · TA获得超过1414个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:313万
展开全部
abstract关键词能让你在类里创建一个或多个没有定义的方法—你给出接口,但是留一部分没做定义,这部分由它的派生类来实现。而interface关键词则创建了一种完全抽象的,根本不提供实现的类,它不仅是一种是抽象类的极端表现的形式,而且是一种能让你将一个对象上传到多个基类的手段。它提供了类似C++的“多重继承(multiple inheritance)”的功能。

Interface是对abstract关键词的进一步强化,它能让你定义类的形式:方法名,参数列表,返回值,它的方法不用特别声明都是public的。Interface也可以包含数据成员,但是它天生就是static和final的,准确得说,它不是接口的组成部分,而是保存在这个接口的动态存储区。Interface的意思是“所有”“实现”这个接口的类都应该长成这个样子,只要用到了这个interface都知道它有哪些方法可以调用。当你implements一个interface的时候,你必须把这个interface的方法定义成public的,不这样java编译器就会报错。

Java的多重继承,由于interface不带任何实现——也就是说interface和内存无关——因此不会有谁去阻止interface之间的结合。这一点很重要,因为有时你会遇到“x既是a又是b 还是c”这种将多个接口结合在一起的行为,被称为“多重继承”。Java并不强制你必须去继承abstract或“具体”类,但是你只能继承一个非interface的类,所有别的基类元素都必须是interface,你
只需把他们放在implments关键词后面,用逗号隔开,你可以实现任意多个interface;也可以把这个类上传到interface。
接口也可以继承,通过继承来扩展interface,加入新的方法,也可以通过继承将多个接口合并成新的interface接口继承还有其特殊的方面就是可以一次继承多个接口,通常extends只用于类,但是由于一个接口可以由多个interface拼接而成,因此在创建新的接口的时候可以用extends表示多个“基接口”,base Interface之间要用逗号分隔。

关于接口的详细内容,请看《Thinking in JAVA》接口一章;
关于接口的高级用法见《JAVA与模式》接口专题
tudou869
2008-07-07 · TA获得超过513个赞
知道小有建树答主
回答量:527
采纳率:0%
帮助的人:354万
展开全部
1.接口可用来实现多重继承,java中多重继承,定义类时,只可有一个父类。但是每个类可以实现多个接口,以这种方式来实现多重继承。
2.接口定义了一组方法,这些方法可以供给其它类来实现。就像“司马药师”兄弟说得,很通俗。而类在实现接口的方法时,却可以有不同的方式,每个类实现同一个接口中同一个方法的代码可以不相同。
看下面代码:
public interface Test000 {
public void play();
}public class Test001 implements Test000{
public void play() {
System.out.println("Test001");
}
}
public class Test002 implements Test000{
public void play() {
System.out.println("Test002");
}
}
public class Test003 {
public static void main(String[] args) {
Test000 t1 = new Test001();
Test000 t2 = new Test002();
Test001 t3 = new Test001();
Test002 t4 = new Test002();
show(t1);
show(t2);
show(t3);
show(t4);
}
public static void show(Test000 t){
t.play();
}
}
这里,在Test003中,show(Test000 t)方法中接收一个Test000类型的参数,可是在main方法中调用show方法时却使用了4种方法,对于show方法来说,它接受Test000类型的参数,可是有了接口,我们可以给它传入的参数就可以有了变化。我们还可以有Test005,Test006类来实现Test000,那么它们的对象也可以传入show方法,当然,使用t1,t2那样的方式来new对象,show就不知道我们给它是对象实际上类型已经变了,这样,我们就可以做很多的事,而show并不知道。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鹤岩
2008-07-07 · 超过28用户采纳过TA的回答
知道答主
回答量:166
采纳率:0%
帮助的人:0
展开全部
1 接口的作用是实现多重继承 因为只能继承一个类(规定的)
2 LZ的意思是接口定义的方法,在实现它的子类中有了,不是重写了吗?它存在的意思是抽象出来了。类似于目录吧!让人更清晰!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5f966d6
2008-07-06
知道答主
回答量:26
采纳率:0%
帮助的人:0
展开全部
一个类只能继承一个父类,但是可以实现一个或多个接口
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
naturepal
2008-07-06 · TA获得超过3408个赞
知道小有建树答主
回答量:1014
采纳率:0%
帮助的人:834万
展开全部
建议你看一看api帮助文档中的接口是怎么写的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式