【发布时间】:2012-02-17 10:28:45
【问题描述】:
我在 matlab 文档和以前关于使用 matlab 继承和类构造函数创建接口的问题中找不到帮助。为了使它整洁,在一个包中。
我可以将其压缩如下:
一个包+MyPkg 有一个超类Super 和一些子类Sub1 Sub2...我的大部分属性和方法都在Super 中定义,所以Sub1 和Sub2 真的只存在于使用它们的构造函数用于简单的例程或一些从 Super 重载的方法。
那么我该如何编写 classdef 和构造函数来支持可以使用以下调用的接口:
a = MyPkg.Super(args).Sub1(args)
b = MyPkg.Super(args).Sub1(args).Sub1Method
在这种情况下,为了可读性和组织性,我想将与 Super 相关的参数与与 Sub1 相关的参数分开。
欢迎提问。
编辑:
在考虑了下面接受的答案并浏览了一些之后,我得出的结论是,上面显示的界面并不真正符合 OO 的精神,对于我的数据分析应用程序来说,更合适的处理方法将包括句柄具有填充对象或对象属性元胞数组的构造函数的类。因为该类是一个句柄类,所以可以使用其上的方法来生成所需的方法。即以下
% in +MyPkg\
classdef Super < handle
properties
outputArray
end
methods
function self = Super(args)
self.outputArray=load_values(args);
end
function out = do_analysis(self,params)
% do some analysis
end
end
end
然后使用这个:
data1 = MyPkg.Super(args)
% Populate the outputArray
analysis1 = data1.do_analysis(params)
等等,
希望能帮助其他人处理这些问题
【问题讨论】:
标签: matlab inheritance interface constructor superclass