霍雨浩怎么继承神位的
5552023-08-24
本篇文章给大家谈谈Java为什么不支持多继承,以及多重继承不建议7使用对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
本文目录
是指:派生自同一个基类的不同类的对象具有一些共同特征“继承”是面向对象软件技术当中的一个概念。如果一个类A继承自另一个类B,就把这个A称为"B的子类",而把B称为"A的父类"。继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。另外,为子类追加新的属性和方法也是常见的做法。有些编程语言支持多重继承,即一个子类可以同时有多个父类,比如C++编程语言;而在有些编程语言中,一个子类只能继承自一个父类,比如Java编程语言,这时可以利用接口来实现与多重继承相似的效果。在c++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。
继承是面向对象编程的一种特性,是保留原有类功能的前提下拓展或改写部分功能,实现代码复用的方式,
单继承就是一个类只可以继承自一个父类,多继承是指一个类可以同时继承多个父类
java中使用的是单继承,也就是一个类有且只能有一个父类,java中可以使用接口实现来实现类似多继承的效果
在java中,原则上是不允许多继承的,也就是类与类之间只可以单继承。
那么,有没有办法,可以在不使用接口的情况下实现多继承呢?答案是可以。
使用内部类就可以多继承,严格来说,还不是实现多继承,但是这种方法可以实现多继承所需的功能,所以把它称为实现了多继承。
下面就举个例子:
假如有一个打电话类Call,里面实现了一个可以打电话的功能的方法callSomebody(StringphoneNum);
一个发信息类SendMessage,里面实现了一个可以发信息功能的方法sendToSomebody(StringphoneNum);
还有一个手机类Phone,这个手机类想实现打电话和发信息的功能;我们知道可以用继承来获得父类的方法,但是只可以单继承呀,也就是说只可以实现其中一个类里面的方法,这并不满足我们的需求。
接下来,我们就使用内部类,达到我们所需的目标了。
classCall{
publicvoidcallSomebody(StringphoneNum){
System.out.println("我在打电话喔,呼叫的号码是:"+phoneNum);
}
}
classSendMessage{
publicvoidsendToSomebody(StringphoneNum){
System.out.println("我在发短信喔,发送给:"+phoneNum);
}
}
publicclassPhone{
privateclassMyCallextendsCall{
}
privateclassMySendMessageextendsSendMessage{
}
privateMyCallcall=newMyCall();
privateMySendMessagesend=newMySendMessage();
publicvoidphoneCall(StringphoneNum){
call.callSomebody(phoneNum);
}
publicvoidphoneSend(StringphoneNum){
send.sendToSomebody(phoneNum);
}
publicstaticvoidmain(String[]args){
Phonephone=newPhone();
phone.phoneCall("110");
phone.phoneSend("119");
}
}
这样就实现了callSomebody(StringphoneNum)和sendToSomebody(StringphoneNum)这两个方法的功能呢。
先说说多继承和单继承的区别。举个例子,如果在武侠世界,多继承意味着人们可以加入多个门派,学习多种武功,集百家之长,风险就是需要自行判断这些武功是否兼容,好的例子是郭靖,坏的例子则是鸠摩智;单继承的武侠世界,人们只能加入一个门派,学习到这个门派的所有武功,缺点是外人可能以为你只会本门武功,即使你自创了更厉害的,他们也不知道。
java从一开始就不支持多继承,主要的原因还是为了简化语言,避免多继承带来的复杂性。相比多接口,多继承机制中一个类可以继承多个类,拥有所有父类的功能,是一种更强大的语言特性,但是对于编程语言来讲,要想实现多继承,语法、编译等方面会十分复杂,因此java语言宣称多接口能够满足需要,但随着时间的推移,官方也在尝试弥补这个缺陷,java8中,接口引入默认实现,这也向多继承靠近了一步。至于java最终是否会支持多继承,还要时间来见证。
OK,关于Java为什么不支持多继承和多重继承不建议7使用的内容到此结束了,希望对大家有所帮助。