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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为什么接口可以多实现,类只能单继承?

15 个回复

正序浏览
Im_back 发表于 2014-8-4 19:23
如果,不同接口中的定义的属性同类型,同名怎么办?

package 游戏;

public class lianxi implements halou,halou1 {
        public static void main(String[] args) {
                System.out.println(halou1.a);
                }
        }
interface halou{
        public static final int a = 0;
}
interface halou1{
        public static final int a = 1;
}

接口的都是有固定形式的 上面需要指定的
回复 使用道具 举报 1 0
一个父类可以有很多子类。就好比一个父亲可以有好多儿子。。可是一个儿子只能有一个亲生父亲吧。。所以类只能单继承。。可是有些时候还需要调用其他类的一些方法或者属性,但是那个类并不是所有的方法或属性都适合那个对象。。所以用接口。。恩。。就好比认干爹的样子。。 总之一句话,一个儿子只能有一个亲爹,但是可以有很多干爹。这个干爹就是接口。
回复 使用道具 举报
还是要好好学习啊   
回复 使用道具 举报
接口往往是用来扩展功能的,可以扩展多个功能,而一个类只能有一个父类,但是可以有爷爷,老爷什么的。只能一个老爸把
回复 使用道具 举报
规则~~~你还想怎么样~
回复 使用道具 举报
你就记成硬性规定就行了啊!
回复 使用道具 举报
为什么不支持多继承?因为当一个继承多个类时,如果继承的多个父类出现了相同的方法时,就出现了调用的不确定性,这个不确定是指方法体不确定虚拟机就挂了。解释下为什么支持多实现:虽然实现了多个接口,但是接口中的方法没有方法体,不管你调用复写实现的接口中任意方法都是一样的,因为它没有方法体,方法明名相同也没问题。
回复 使用道具 举报
类如果多继承的话,如果多个类都有同名函数,调用时出错
回复 使用道具 举报
接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。
抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。
人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.
所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。
回复 使用道具 举报
从面向思想来说,
接口是一种规范,
而类是一种体系
个人理解
回复 使用道具 举报
接口一般指对象具有的功能,就拿人类来举例说明,人可以有很多技能,但是只能有一个爸爸。
回复 使用道具 举报
追逐我的明天 发表于 2014-8-4 19:17
类与接口可以多重实现(接口与接口之间可以有相同的方法名),
接口中没有成员变量(只有常量),而方法是抽象的, ...

如果,不同接口中的定义的属性同类型,同名怎么办?
回复 使用道具 举报
本帖最后由 张然龙 于 2014-8-4 20:14 编辑

接口是定义规范声明约束,类实现接口并不存在于继承体系,而是单纯的实现了功能扩展,声明约束.

而类与类之间的继承则不同,类与类之间存在着复杂的继承体系.

如果类可以多继承,势必会导致类与类之间的关系错综复杂而难于维护.

java不同于C++,java是C++的改进版, 初衷是抹去了C++的不合理方面.

而多重继承,就被sun公司认为是不合理的,所以取消了C++的多重继承.

但是为了使得程序的扩展性提高,接口的多实现并没有取消.

评分

参与人数 1技术分 +1 收起 理由
张然龙 + 1 很给力!

查看全部评分

回复 使用道具 举报
如果一个类可以继承多个类,那么这个类所有成员变量名和方法名必须要不同(C++就是这样要求的).这是前提,我们必须确定这个才能用多重继承,如果在类方法名或者成员变量名很多情况下,这是很复杂的事情.原因:要确定子类到底继承方法或属性是哪一父类的
回复 使用道具 举报
想想,如果多继承、父类中有同名同参同返回的方法,子类要覆盖父类的这个方法、但运行环境怎么知道你的子类要覆盖的是哪个父类的方法呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马