黑马程序员技术交流社区

标题: 关于java接口多继承 [打印本页]

作者: 何竹冬    时间: 2013-1-5 13:38
标题: 关于java接口多继承
本帖最后由 何竹冬 于 2013-1-5 15:26 编辑

java多继承会出现安全问题 ,为什么接口可以多继承,不会出现安全问题吗?
作者: 杨建聪    时间: 2013-1-5 13:42
因为多继承容易带来安全隐患:当多个父类中定义了相同功能,但功能内容不同时,子类对象不确定运行哪一个,但是JAVA保留了这种机制,并用另一种提现形式来完全表示---多实现
作者: 李丹    时间: 2013-1-5 13:46
接口内的方法都是抽象的 不会出现冲突
作者: 高境    时间: 2013-1-5 13:46
之所以没有多继承,是因为多继承容易引起混乱。就像现实中,一个儿子只能有1个父亲,有多个父亲的话就会乱套。比如说如果一个类继承了两个父类,父类中都一个run()方法;子类继承过来了,那么当调用时,到底用哪个父类的run()方法呢?
一个类只可继承自一个具体 class,但可实现多个接口。interface不涉及到实现细节,不与任何存储空间有关连。可以实现合并多个interface ,达到可向上转型为多种基类的目的。 新类可继承自一个具象class,其余继承都得是interfaces。

作者: 何竹冬    时间: 2013-1-5 13:49
高境 发表于 2013-1-5 13:46
之所以没有多继承,是因为多继承容易引起混乱。就像现实中,一个儿子只能有1个父亲,有多个父亲的话就会乱 ...

多谢,明白了。
作者: 郑传庆    时间: 2013-1-5 13:57
Java语言不支持一个类有多个直接的父类(多继承),但可以实现(implements)多个接口,间接的实现了多继承,但接口类却是个例外,接口是可以实现多继承的.打个比方:就拿父亲与儿子来说。父亲就相当于父类(father),儿子就相当于(son):

public class father {
        public void head(){
                System.out.println("父亲性别:男");
        }
       
        class son1 extends father{
                @Override
                public void head(){
                        System.out.println("儿子继承父亲的性别:男");
                }
        }
        class son2 extends father{
                @Override
                public void head(){
                        System.out.println("儿子继承父亲的性别:男");
                }
        }       
}
也就是说,儿子的父亲只有一个,而父亲的儿子可以有多个。至于接口可以实现多继承,网上有很多例子,我记得好像毕老师的视频好像也有说过。以上的例子说得比较范范,但也希望帮助到楼主。不明白的地方可以找我



作者: 郑传庆    时间: 2013-1-5 14:38
何竹冬 发表于 2013-1-5 13:49
多谢,明白了。

既然明白了,麻烦兄弟把贴改成已解决




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