亲爱的社区,
我已经在谷歌和论坛中找到了一些有趣的帖子。但最终我仍然没有得到它。所以,我将在这里发布问题。我知道在Matlab中已经实现了get / Set方法,但我正在使用对象,因此我不明白在哪里实现它们。
整体结构:
+Measurement\MeasurerIF
+Measurement\MeasurerComponent
在我的界面中,我声明了我想要实现的函数,而且这个界面更具抽象性。它看起来像这样:
classdef MeasuererIF < handle
methods (Abstract=true)
getStatus(cObj) ;
setStatus(cObj,iStatus) ;
getInfo(cObj) ;
setInfo(cObj,sInfo) ;
end
端
然后我创建了另一个类MeasurerComponent,其中我实现了方法以及构造函数:
classdef MeasurerComponent < PerformanceMeasurement.MeasuererIF
%% MeasurerComponent: Evaluates which model is used and contains them as childs.
% Detailed explanation goes here
properties (Access=protected)
miStatus;
msInfo;
mcData;
end
methods
%constructor
function cObj = PerformanceMeasurement.MeasurerComponent ;
cObj.miStatus = -1 ;
cObj.msInfo = 'Import' ;
cObj.mcData = [] ;
end
%Status
function setStatus(cObj,iStatus)
cObj.miStatus = iStatus;
end
function iStatus = getStatus(cObj)
iStatus = cObj.miStatus;
end
%Info
function setInfo(cObj,sInfo)
cObj.msInfo = sInfo;
end
function sInfo = getInfo(cObj)
sInfo = cObj.msInfo ;
end
end
端
之前我刚刚使用get
方法并且最近添加了set
方法,现在它不再起作用了。问题是当我创建一个对象时
obj = Measurement.MeasurerComponent
程序不再初始化值。
For a = obj.getInfo;
我只收到[]
有人知道为什么它不再被初始化了吗?收到提示后,由于句柄类,我将初始化过程更改为构造函数。
我非常感谢并且对每个提示和小费感到高兴! 干杯
答案 0 :(得分:2)
您的构造函数应由private void optionsToolStripMenuItem_Click(object sender, EventArgs e)
{
???
}
定义,不带function cObj = MeasurerComponent
前缀。这就是在Matlab中定义和使用包的方式 - 如果在包外部使用类,则添加前缀,但不在包内(在此解释:&#34;请注意,定义不使用包前缀&# 34; -
http://uk.mathworks.com/help/matlab/matlab_oop/scoping-classes-with-packages.html?refresh=true)。
此外,您有一个拼写错误 - 您的抽象父类文件名为PerformanceMeasurement
,但在定义中拼写为+Measurement\MeasurerIF
。调用哪一个并不重要,但是类的名称必须与文件名匹配!
如果我更正了这两个问题,那么您的代码就会变成
MeasuererIF
+Measurement\MeasurerIF
classdef MeasurerIF < handle
methods (Abstract=true)
getStatus(cObj)
setStatus(cObj,iStatus)
getInfo(cObj)
setInfo(cObj,sInfo)
end
end
+Measurement\MeasurerIF
如果我键入以下内容:
classdef MeasurerComponent < Measurement.MeasurerIF
%% MeasurerComponent: Evaluates which model is used and contains them
%% as childs.
properties (Access=protected)
miStatus
msInfo
mcData
end
methods
%constructor
function cObj = MeasurerComponent
cObj.miStatus = -1 ;
cObj.msInfo = 'Import' ;
cObj.mcData = [] ;
end
%Status
function setStatus(cObj,iStatus)
cObj.miStatus = iStatus;
end
function iStatus = getStatus(cObj)
iStatus = cObj.miStatus;
end
%Info
function setInfo(cObj,sInfo)
cObj.msInfo = sInfo;
end
function sInfo = getInfo(cObj)
sInfo = cObj.msInfo ;
end
end
end
然后我回来了
obj = Measurement.MeasurerComponent;
obj.getInfo
这就是我的期望。