无需关注,查看原文
多重继承很好理解,举个例子,Sub既属于Base1类,有属于Base2类,具有两个类的特性,那么就需要多重继承,下面是代码:
classdef Base1 % Base1.m
properties
x
end
methods
function obj = Base1()
disp('Base1');
end
end
end
classdef Base2 % Base2.m
properties
y
end
methods
function obj = Base2()
disp('Base1');
end
end
end
classdef Sub < Base1&Base2 % Sub.m
properties
z
end
methods
function obj = Sub()
disp('Sub')
end
end
end
- 多重继承需要特别注意的一点就是同名属性和同名方法的处理,如果子类中重新定义了方法,那么直接调用时会调用子类的方法,但是可以通过 方法名@类名的形式可以调用父类同名方法,在子类中可以访问所有基类的属性。
- 如果说基类中也有同名属性和同名方法,那么必须至多有一个公有属性,否则就会产生歧义。
- 构造函数按照继承的顺序来调用,如下:
如果直接继承一个Value类和Handle类会出现错误,需要在Value类的定义中加入HandleCompatible,如下:classdef (HandleCompatible) Base2
- 禁止类的继承可以在classdef后面加上(Sealed),或者将构造函数声明成private。