黑马程序员技术交流社区

标题: java接口!!! [打印本页]

作者: 韩秀山    时间: 2013-5-29 19:16
标题: java接口!!!
我在看源码的时候,有一个类中调用了一个接口中的方法!!
为什么调用接口中的方法,java会自动调用他的一个实现类中重写的方法了??如果有多个实现类,该如何调用??谁能帮我解释一下!谢谢了!!!

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


作者: Changer_s    时间: 2013-5-29 21:28
抽象类是否要实现接口中的所有抽象方法?

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

这就是一个很好的简化,也就是用抽象类继承接口,并且实现所有的方法,而实体类仅仅只需要重现抽象类中自己想要的方法,其他的方法可以不用重写了
这可以理解一个中介:一个公司要很多类型的员工,他的任务交给了中介,中介要实现该公司的要求,就必须实现所有的方法
但是可以把需要的人进行分类真理,需要什么人就找什么人,也就相当于一个组织者
而不是让公司需求的所有的人同时去该公司应聘,这是不科学的!
懂了没???
作者: 胡浩    时间: 2013-5-29 21:35
我有时候看源码也有这样的疑惑。我想有些接口的实现方法是有底层去实现的。对于这样的接口,不需要程序员来实现。我们只需要知道这个接口是干什么用的,有什么样的特性和功能就可以了应该。
作者: 韩秀山    时间: 2013-5-29 21:39
刘正祥 发表于 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) {
调用了这个实现的接口类
作者: 韩秀山    时间: 2013-5-29 21:40
Changer_s 发表于 2013-5-29 21:28
抽象类是否要实现接口中的所有抽象方法?

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

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

唉!!怎么就看不明白呢!!这是自己创建的接口。不是Java自带的!!
作者: Changer_s    时间: 2013-5-30 00:03
韩秀山 发表于 2013-5-29 21:40
不明白??你说的好像和我问的没啥关系!!

你不是问为什么会重写接口的所有方法吗?还是多个实现类如何调用吗?
第一个问题我回答了,第二个问题我告诉你,可以中间加一个抽象类,实现中介作用,方便你实现类值重写他需要的方法 ,能懂我说的吗?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2