关于“php_继承多个”的问题,小编就整理了【3】个相关介绍“php_继承多个”的解答:
python 继承和多态区别?一、继承和多态
1、继承:继承主要用于描述类之间的关系的,一个类可以共享其他一个或者多个类的定义或者方法结构。比如说人类是一个类,男人和女人也可以作为分别一个类。把人类作为男人和女人的基类,男人和女人类可以作为子类,从基类人类继承相关的属性和方法:比如眼睛、头发、会走路、会吃饭等等。
2、多态:子类可以从基类继承相同的属性或者方法,比如相同的函数名,在子类中可以有不同的实现,即子类可以有自己的特殊性,这就叫做多态。比如:男人头发短,女人头发长。
二、继承和多态的作用
1、继承的作用:继承的作用是实现代码的复用,子类可以拥有基类的所有属性和方法。
2、多态的作用:基类中定义的一个方法,可以在子类中重新实现,以达到不同的操作。
Java为什么不能继承多个父类?这个问题,java之父曾经回答过,设计java语言的初衷就是要设计一门更加简单的语言,所以java的设计屏蔽了一些负载的东西,其中就包括指针和多继承。为什么说多继承复杂呢?这就要说一个多继承的菱形继承问题(又叫钻石继承)。
菱形继承(钻石继承)
那么菱形继承有什么问题?
资源浪费:移动电话继承了多份父类(硬件)的属性(getCreateTime()的引用);
二义性:移动电话的getId无法确定是返回imei还是mac地址。
那么c++中如何解决这个问题?有两种解决办法:
1. 通过域限定来访问,能够解决二义性问题,例如
移动电话 d = 移动电话()
d.网络设备::id
d.电话::id
2. 通过虚继承,能够解决资源浪费和部分二义性问题,例如
class 电话:virtual public 硬件{}
class 网络设备:virtual public 硬件{}
移动电话 d = new 移动电话()
d.id//这时候访问的是硬件::id
较真的朋友可能会问,如果重名的属性不在硬件类里面定义会怎么样?是的,如果上述例子的硬件类并没有定义id,那么二义性依然存在并导致编译无法通过,所以虚继承为什么说只是部分解决二义性问题。
java语言可以通过什么实现多继承?java可以通过内部类实现多继承,这也是内部类存在的主要意义,完善多继承
> (1)通过实现多个接口。 (2)通过内部类实现多重继承。 public class Father { public int strong(){ return 9; }}public class Mother { public int kind(){ return 8; }}public class Son { /** * 内部类继承Father类 */ class Father_1 extends Father{ public int strong(){ return super.strong() + 1; } } class Mother_1 extends Mother{ public int kind(){ return super.kind() - 2; } } public int getStrong(){ return new Father_1().strong(); } public int getKind(){ return new Mother_1().kind(); }}
到此,以上就是小编对于“php_继承多个”的问题就介绍到这了,希望介绍关于“php_继承多个”的【3】点解答对大家有用。