如何改变子类父类属性的默认值

23日视图(30天)
有什么办法可以改变一个超类的默认值属性的属性的一个子类?我知道我能改变它的构造函数方法,但似乎并不正确的语义。也使财产抽象超类是不方便,因为你不能直接实例化父类。有什么解决方案吗?
5个评论
尼古拉斯丁斯莫尔
尼古拉斯丁斯莫尔 2012年10月3日
这是我想做什么
classdef超类<处理
属性
CalculateMode = 1;% 1 = 2 = option2 option1
结束
结束
classdef<父类子类
属性
CalculateMode = 2;
结束
结束

登录置评。

接受的答案

马特·J
马特·J 2012年10月3日
编辑:马特·J 2012年10月3日
放弃这个,在构造函数中设置CalculateMode的价值。这是适当的做法。

更多的答案(2)

菲利普·米
菲利普·米 2021年6月25日
与一个子类覆盖父类属性属性不几个障碍,但覆盖超类 方法 财产是简单的一个子类。这允许父类定义一组违约,并允许子类的子类来修改这些默认值,而无需重复相同的每个构造函数的代码行。
这个概念在其绝对简单的形式:
classdef超级
属性
CalculateMode
结束
方法
函数obj =超级
obj.CalculateMode = obj.CalculateModeSetting;
结束
函数= CalculateModeSetting (~)
= 1;
结束
结束
结束
classdef子<超级
属性
CalculateModeSetting = 2
结束
结束
这使:
> >超级
ans =
超级属性:
CalculateMode: 1
> >子
ans =
属性:
CalculateModeSetting: 2
CalculateMode: 2

丹尼尔Shub
丹尼尔Shub 2012年10月3日
其他我能想到唯一方式就是超类的构造函数CalculateMode作为一个可选的参数。子类的构造函数会通过超类的模式。

类别

找到更多的在子类定义帮助中心文件交换

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!