java 接口的疑惑

java的接口都是空,但是为什么一定要去实现他才能具有某些功能,即使自己写的方法和接口中的方法是一样的也不行,比如runnable中的run如果要实现多线程的话就一定要去... java的接口都是空,但是为什么一定要去实现他才能具有某些功能,即使自己写的方法和接口中的方法是一样的也不行,比如runnable中的run 如果要实现多线程的话就一定要去实现runnable这个接口,并实现run()方法,但是如果我这个类自己写了一个run()方法而没去 implements Runnable 这样却不具有多线程的功能,为什么啊,
还比如 java.io.Serializable
我的意思就是为什么实现了某些接口就具有了某些功能呢?
说错了,请大家无视runnable~~
只要告诉我为什么继承了java.io.Serializable后就可以序列化了.
展开
 我来答
我叫阿灌
2011-06-07 · TA获得超过442个赞
知道小有建树答主
回答量:284
采纳率:0%
帮助的人:237万
展开全部
因为不论是Runable和Serializable,那是人家Java提供了内建的支持,说白了就是人家已经把一系列的工作都帮你做好了。
比如你所说的Serializable接口,没错它是空的。但你知不知道还有一个与序列化有关的接口:Externalizable?你看一下Java的源码就知道了,他也是一个处理对象序列化的类,里面有两个抽象方法voidreadExternal(ObjectInput in)和void writeExternal(ObjectOutput out) ,这个就是留给代码编写者自己实现序列化逻辑的接口。你如果自己有套序列化方案,那就使用Externalizable,如果没有自己的方案,那就用人家Java的Serializable,如果非要较真为什么使用了Serializable就能序列化呢?为什么我自己不能写一个XXXable来序列化呢?因为人家Java虚拟机就认“Serializable”这个名儿。。。。
这就是楼上所说的Java规范,人家Java就叫这名字,除非你给Oracle公司研发部打电话,说是把Java序列化类改叫XXXable,那这个接口也能起作用
百度网友6eed2f8
2011-06-07 · TA获得超过5082个赞
知道大有可为答主
回答量:3423
采纳率:0%
帮助的人:3783万
展开全部
这个怎么说呢,通俗的将,接口是一个规范,是一个标准,本事只是声明这个规范的内容,并不实现,而是有使用这个规范的人自己去实现。同时,如果你要使用这个规范,那么你就必须完全遵循这个规范才行,就像你买鞋(同比你实现的类)不能买一只(接口的部分方法)一样,既然买(实现),就得是完整的(全部实现接口)。当然,不同的厂家生产的鞋是不一样的,有皮鞋(实现类1),有凉鞋(实现类2),有拖鞋(实现类3),有高跟鞋(实现类4),他们都称之为鞋,是因为他们都实现了鞋的全部功能(两只),如果某个厂家生产出来的鞋只有一只,那么你买么?呵呵。
在上面的这个例子里,鞋的抽象意义就是接口,它规范了鞋应该是有2只(接口的方法)
你上面的例子也是,runnable只是一个标准,声明了什么样的实现类才可以具备多线程的功能,所以如果你要想实现多线程,那你就必须完全按照标准执行,不能缺斤少两,run方法是一定要有的
可能一时有点绕,慢慢体会吧

另外,继承和实现是两码事,基类和接口不一样的,基类是半成品,本身已经具备了鞋的基本功能,继承他的人先天性都已经有这个功能了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友66d722a
2011-06-08 · TA获得超过1166个赞
知道小有建树答主
回答量:246
采纳率:0%
帮助的人:228万
展开全部
这东西说起来可就长篇大论了。实现Serializable接口,主要是为了让这个对象可以在网络中传输,在Java IO、Socket编程中用的特别多,当把一个对象的信息存储到流中时,这个对象必须实现实现Serializable接口,这是一个序列化的过程.而在前台需要将对象的信息从流读取出来的这个过程,是个反序列化的过程.
继承和实现某个接口是不同的概念。
inheritance(继承):Dog extends Animal,表示Dog is a Animal,狗就是一只动物
implements(实现):Door implements Alarm,表示Door like a Alarm,防盗门像报警器一样,有报警的这个功能
Java中虽然是单继承的,但是有了接口这个概念之后,其实也可以说是多继承的,因为一个类可以实现多个接口。
希望对你有些帮助,如果有什么问题,欢迎进一步的交流,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9523e442c
2011-06-07 · TA获得超过459个赞
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:105万
展开全部
关于Serializable接口,应该是说“实现”,而不叫“继承”。
这纯粹是一个内定的规则,一个能否序列化的标志!
规定了“要序列化,必须实现Serializable接口”,并没有什么关联实现方法之类的。
正如问“为什么String要叫String”那样,因为java语言就这样规定。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Beyond少爷
2011-06-07 · TA获得超过245个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:106万
展开全部
应该是系统内部已经为这些接口做了实现。 你实现了这个接口就可以隐式的调用系统做的序列化实现。 就跟你打开dos窗口执行的一些固定的命令一样。window已经定义了你输入这些字符执行的是什么操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式