【发布时间】:2017-04-18 16:13:26
【问题描述】:
我认为这是一个非常基本的问题,但我被困在这个问题上。在 MATLAB 中,我有一个超类 super 和子类 sub。
现在我正在尝试从我的子类中更改超类的属性color。所以我做了以下事情:
classdef super < handle
properties
color = 'red';
end
methods
function obj = super()
% ...
end
function obj = change_color( obj )
obj.color = 'blue';
end
end
end
还有这个:
classdef sub < super
properties
name = 'car';
end
methods
function obj = sub()
obj = obj@super();
obj.change_color();
end
end
end
接下来我做了:
super_obj = super();
sub_obj = sub();
但结果是,我没有更改超类的属性,而是更改了子类中继承的属性。我明白了:
super_obj.color = 'red';
sub_obj.color = 'blue';
但我想要:
super_obj.color = 'blue';
提前致谢。
【问题讨论】:
-
您只能更改当前实例的
color属性。如果您创建两个sub实例,它们将具有独立的颜色。 -
但是不存在从继承的子类中更改超类属性的可能性吗?
-
没有。继承只有一个方向是有充分理由的。如果您有两个子类想要将颜色更改为两个不同的值怎么办?
标签: matlab class oop inheritance