gpt4 book ai didi

oop - Matlab子类化问题

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:04 26 4
gpt4 key购买 nike

关于在新类系统下在 matlab 中进行子类化的问题。我得到了具有一些 protected 属性的 A 类:

classdef Table < Base

properties (SetAccess = protected, GetAccess = public)
PropA = [];
end %properties

我想创建一个具有一些特殊功能的子类,并进一步限制对 PropA 的访问。 (即在子类中使获取访问私有(private))。我的第一个想法是:

classdef subTable < Table

...
methods (Access = private)
out = get.PropA(obj, value);
end %private methods

但是,在帮助中它说:“您必须在不指定属性的方法 block 中定义属性访问方法。”这个想法到此为止。

有什么想法吗?

最佳答案

我不认为这是可能的。来自 MATLAB Documentation :

只有两个条件允许您重新定义父类(super class)属性:

  • 父类(super class)属性Abstract属性设置为true
  • 父类(super class)属性的 SetAccess 和 GetAccess 属性均设置为私有(private)

我也不认为这样做是个好主意。它违反了 Liskov Substitution Principle .为接受 Table 而编写的函数也应该能够接受 subTable 并正常工作。如果这样的函数访问 PropA,则在传递子表时会失败。

关于oop - Matlab子类化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/762380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com