注意,下面的matlab相关文档页面,但不提供一个回答我的问题(至少对我来说):内置类型的子类的属性matlab内置类型的子类
如何创建一个子类内置类?
5视图(30天)
显示旧的评论
我无法创建一个子类内置类ss(状态空间系统,控制系统工具箱的一部分)。类的构造函数,包括调用父类构造函数,返回一个实例。这个实例的方法“new_method”()函数列表的方法,但是当我的实例上调用该方法,它不是发现了这里的翻译是很短的版本的代码,生成描述问题:
classdefmy_subclass <党卫军
属性
my_prop
结束
方法
函数obj = my_subclass (the_value)
%的构造函数。
obj = obj@ss ();%调用超类构造函数不是必需的,
%,但使代码更加清晰
obj。my_prop = the_value;
结束
函数obj = new_method (obj the_value)
%的简单示例存在根据的一种方法
%()函数方法,但不能被称为。
obj。my_prop = the_value;
结束
结束
结束
实例化工作正常:
> > = my_subclass实例(3)
实例=
空状态空间模型。
> > instance.my_prop
ans =
3
> >
的新方法:
> >方法(实例)
方法类my_subclass:
…new_method %方法的结果是太长时间显示在这里,但它确实包含“new_method”。
称“new_method”导致一个错误:
> > instance.new_method (4)
错误使用InputOutputModel / subsref(44)行
没有房地产类的“my_subclass”匹配的字符串“new_method”。使用属性来获取这个类的属性列表。
> >
答案(1)
菲利普Borghesani
2017年2月21日
你做对了一般,但ss类应该被标记为
密封
,我建议不子类化。只有一个学生类的属性及其子可以用点索引、访问调用一个方法使用直接方法调用:
% instance.new_method(4) %将失败
new_method(例如,4)%正确调用new_method