本系列内容为《MATLAB面向对象编程–从入门到设计模式》学习笔记,特此说明。
类的继承
继承是一种提供代码复用的方法,它是面向对象编程中最重要的概念之一。
面对对象中的“继承”提供一种机制,使得可以利用类和类之间的相似关系,利用已有的代码,在新的类中只需要添加多出来的属性和方法。
%%定义类Point2D
classdef Point2D < handle
properties
x
y
end
methods
function obj = Point2D(x0,y0)
obj.x=x0;
obj.y=y0;
end
function print(obj)
disp('x=',num2str(obj.x));
disp('y=',num2str(obj.y));
end
end
end
%%利用Point2D定义Point3D
classdef Point3D < Point2D %使用 < 表示继承
properties
z
end
methods
function obj = Point3D(x0,y0,z0)
obj = obj@Point2D(x0,y0); %使用 @ 表示调用父类
obj.z =z0;
end
function print(obj)
print@Point2D(obj);
disp('z=',num2str(obj.z));
end
end
end
在MATLAB中,继承关系也叫泛化关系,被继承的类叫作父类或者基类(Parent Class 或 Base Class);
继承的类叫作子类或者派生类(Child Clasee或 Derived Class)。
使用 “<” 表示继承
在子类中调用父类同名方法
子类和父类的成员方法可以有相同的名字,并且在子类的方法内部,可以调用父类的同名方法。
classdef super
......
methods
function foo(obj,argu)
......
end
end
end
classdef sub < super
......
methods
function foo(obj,argu1,argu2)
......
foo@super(obj,argu1); % @前面是父类方法的名称,后面是父类的类名
.....
end
end
end
多态
多态(Polymorphism)是建立在继承的基础上的面向对象编程的精华之一。
多态是指同名的方法被不同的对象调用会产生不同的行为(多态)。