使用子类在超类属性上操作

问题描述 投票:-1回答:1

对所有人来说

我是一名新手程序员(我没有采用结构化课程)试图选择MATLAB。目前,我正在尝试理解MATLAB的面向对象编程工具。我想在下面的步骤中干净地划分我的项目。我想继承经过证实的data并在validate上进行研究。我遇到了这个错误You cannot set the read-only property 'data' of validations.

我该怎么做呢?这是在MATLAB中组织自己的合适方式吗?

classdef formatData.m 
    properties
        data = []
    end
    methods
        function formatData(data)
        % This should initialize the data
        end
        function columnShift(data)
        % Simple changes
        end
    end
end


classdef validateData.m < formatData
    properties
        error = logical(false)
    end
    methods
        function validateData(data)
            if nargin > 0
                obj.data = obj@formatData;
            end
        end
        function checkValues()
        % check values on data from formatData
        end
    end
end
matlab class oop inheritance
1个回答
1
投票

令人遗憾的是,MATLAB经常更改面向对象的代码。我发布的代码是从最新文档中引用的。我拥有一年的书似乎完全不同。

classdef formatData

    properties
        data = [];
    end

    methods
        function obj = formatData(DataIn)
            %formatData This should initialize the data
            obj.data = DataIn;
        end

        function [DataOut] = columnShift(obj)
            %columnShift ? How to shift the column?
            DataOut = (obj.data)';
        end
    end
end


classdef validateData < formatData
    %validateData 

    properties
        error = false;
    end

    methods
        function obj = validateData(DataIn)
            %validateData 
            obj@formatData(DataIn);
        end

        function [] = checkValues(obj)
            %checkValues 

        end
    end
end
© www.soinside.com 2019 - 2024. All rights reserved.