A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩秀山 中级黑马   /  2013-5-29 19:16  /  1951 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我在看源码的时候,有一个类中调用了一个接口中的方法!!
为什么调用接口中的方法,java会自动调用他的一个实现类中重写的方法了??如果有多个实现类,该如何调用??谁能帮我解释一下!谢谢了!!!

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

9 个回复

倒序浏览
你确定没看错?不可能会直接调用接口的方法?接口的方法都是没有方法体的,你看的是父类引用指向子类对象的吧?不敢相信!求代码!
回复 使用道具 举报
应该不会吧,楼主给个代码看一下撒
回复 使用道具 举报
接口里面的方法就有点像抽象类里面的方法一样,他仅仅只是定义一个方法名,而具体的方法内容你得自己写
还有就是接口的特点,实体类如果实现接口就必须重写所有的方法(和抽象里面的抽象方法相似)
因为接口的作用是作用很多的实体类,所有他无法辨别要作用的类,仅仅只能通过方法的重写来实现功能
比如:为什么usb接口插电扇回转,我想应该是因为他也重写了接口的很多方法,仅仅只是给力一个空空的方法体而已,唯一扇风转动的这个方法写了具体的内容

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
抽象类是否要实现接口中的所有抽象方法?

答: 答案是肯定的.确定的是,接口中的所有抽象方法都必须被实现如果抽象类没被
继承,则该类必须实现接口中的所有抽象方法.如果抽象类被继承了,那么该类
中可以不实现,但是其子类必须实现.

这就是一个很好的简化,也就是用抽象类继承接口,并且实现所有的方法,而实体类仅仅只需要重现抽象类中自己想要的方法,其他的方法可以不用重写了
这可以理解一个中介:一个公司要很多类型的员工,他的任务交给了中介,中介要实现该公司的要求,就必须实现所有的方法
但是可以把需要的人进行分类真理,需要什么人就找什么人,也就相当于一个组织者
而不是让公司需求的所有的人同时去该公司应聘,这是不科学的!
懂了没???
回复 使用道具 举报
我有时候看源码也有这样的疑惑。我想有些接口的实现方法是有底层去实现的。对于这样的接口,不需要程序员来实现。我们只需要知道这个接口是干什么用的,有什么样的特性和功能就可以了应该。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
刘正祥 发表于 2013-5-29 19:21
你确定没看错?不可能会直接调用接口的方法?接口的方法都是没有方法体的,你看的是父类引用指向子类对象的 ...

ServerThread serverThread = new ServerThread(socket, this.infoText);
                               
                                Thread thread = new Thread(serverThread,remoteHost);
这个是个接口
public interface ServerService {

        public void service(Request request,Socket socket,JTextArea infoText,ServerThread serverThread);
}

public class RegisterService implements ServerService {

        @Override
        public void service(Request request,Socket socket,JTextArea infoText,ServerThread serverThread) {
调用了这个实现的接口类
回复 使用道具 举报
Changer_s 发表于 2013-5-29 21:28
抽象类是否要实现接口中的所有抽象方法?

答: 答案是肯定的.确定的是,接口中的所有抽象方法都必须被实现如 ...

不明白??你说的好像和我问的没啥关系!!
回复 使用道具 举报
胡浩 发表于 2013-5-29 21:35
我有时候看源码也有这样的疑惑。我想有些接口的实现方法是有底层去实现的。对于这样的接口,不需要程序员来 ...

唉!!怎么就看不明白呢!!这是自己创建的接口。不是Java自带的!!
回复 使用道具 举报
韩秀山 发表于 2013-5-29 21:40
不明白??你说的好像和我问的没啥关系!!

你不是问为什么会重写接口的所有方法吗?还是多个实现类如何调用吗?
第一个问题我回答了,第二个问题我告诉你,可以中间加一个抽象类,实现中介作用,方便你实现类值重写他需要的方法 ,能懂我说的吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马