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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 在乎.. 中级黑马   /  2013-7-20 08:00  /  1774 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 在乎.. 于 2013-7-29 23:18 编辑

interface A
{
        void methodA();
}
interface B extends A
{
        void methodB();
}
interface C extends B,A
{
        void method();
}
class D implements C{

        @Override
        public void methodB() {
                // TODO 自动生成的方法存根
               
        }

        @Override
        public void methodA() {
                // TODO 自动生成的方法存根
               
        }

        @Override
        public void method() {
                // TODO 自动生成的方法存根
               
        }
        
}
//这里为什么会实现了多继承的,没有方法体是不是就可以乱写了,但竟然编译也能通过哦。

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

6 个回复

倒序浏览
之所以不能多继承是因为子类对象在调用父类方法时会产生调用的不确定性,既然父类都是抽象方法,那么也就不存在调用的不确定性了,都要由子类覆盖抽象方法后才能使用。
你这里D继承了C,C又继承了A,B,那么D自然要覆盖abc的所以抽象方法才能创建对象,不然D也应该标示为抽象类或者接口

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
在java中,一个接口本来就可以继承多个接口。所以interface C implements B, A,这个跟有没有方法体没有关系。
回复 使用道具 举报
接口不对方法进行实现,只是声明,java的接口可以进行多继承,当一个类继承接口需要对接口里的方法进行实现
其实我觉得接口设计来就是让代码简洁规范,方便重复利用,真正的功能还是要当类继承了接口后实现的
回复 使用道具 举报
类之间不能进行多继承,是因为多继承容易代理安全隐患:当多个父类中定义了相同功能,但功能内容不同时,子类对象不确定要运行哪一个。
而java中有保留了这种机制,就是多实现,因为接口中的所有方法都是抽象的,没有方法主体,也就没有安全隐患。你这里D实现了C接口,而C继承了B和A,自然D就实现了A,B,C三个接口里的所有方法
回复 使用道具 举报
接口可以被类多实现,这是java对多继承不支持的转换形式。
首先说一下为什么不能java多继承,因为为了避免父类方类方法名,参数列表一样而方法内容不一样的时候,子类不知道继承哪个内容。
而多实现就不会出现这个问题,接口只是声明了方法,他并没有在方法里面定义具体的内容,所以,就算2个接口都有同样的方法,同样的参数,子类在实现接口里面的方法时,也不会出现这样的问题。
回复 使用道具 举报
sergio 中级黑马 2013-7-29 20:23:39
7#
面向接口编程。接口是全抽象,抽象类是半抽象。在接口中只有方法名没有具体内容,没有构造函数,还要实现接口中全部的方法。而你的这个D实现了C接口,而C接口有继承B,A;所以实现D接口的同时也要实现A、B、C中所有方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马