我认为这是一个非常基本的问题,但我坚持这一点。在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 = [email protected]();
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'属性。如果您创建两个“子”实例,它们将具有独立的颜色。 – Suever
但是不存在任何可能性从继承的子类中改变超类的属性吗? – Lemonbonbon
不可以。继承只有一个方向才是有道理的。如果您有两个想要将颜色更改为两个不同值的子类,该怎么办? – Suever