![]() |
Matlab子类化问题
关于新类系统下在matlab中进行子类化的问题。我的A类具有一些受保护的属性:
classdef Table < Base properties (SetAccess = protected, GetAccess = public) PropA = []; end %properties 我想创建一个具有某些特殊功能的子类,并进一步限制对PropA的访问。 (即在子类中将get访问权限设为私有)。我的第一个想法是: classdef subTable < Table ... methods (Access = private) out = get.PropA(obj, value); end %private methods 但是,在帮助中显示:“您必须在未指定属性的方法块中定义属性访问方法。”这个想法非常重要。 有任何想法吗? 回答: 我不认为这是可能的。从[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_oop/brenyev-1.html#zmw57dd0e11935"]MATLAB文档中[/URL] : 只有两个条件允许您重新定义超类属性: [LIST][*]超类属性Abstract属性设置为true[*]超类属性将SetAccess和GetAccess属性都设置为private[/LIST]我也不认为这样做会是个好主意。它违反了[URL="http://en.wikipedia.org/wiki/Liskov_substitution_principle"]Liskov替代原则[/URL] 。为接受表而编写的函数也应该能够接受子表并正常工作。如果此类函数访问了PropA,则在传递subTable时它将失败。 [url=https://stackoverflow.com/questions/762380]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 23:28。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.