2009-04-17 3 views
3

새로운 클래스 시스템에서 matlab에 서브 클래 싱하는 것에 관한 질문. 나는 몇 가지 보호 특성을 가진 클래스 A를 가지고 :Matlab 서브 클래 싱 질문

classdef Table < Base 

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

나는 몇 가지 특수 기능과 서브 클래스를 만들고, 더 PropA에 대한 액세스를 제한하고 싶습니다. (즉, 하위 클래스에서 액세스를 비공개로 설정). 내 첫번째 생각했다 :

classdef subTable < Table 

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

그러나, 도움에 말한다 : "당신은 어떤 속성을 지정하지 않는 방법 블록의 속성 액세스 방법을 정의해야합니다." 그 아이디어에 너무 많은 것.

아이디어가 있으십니까?

답변

4

나는 이것이 가능하다고 생각하지 않습니다. MATLAB Documentation에서 :

당신이 슈퍼 클래스의 속성을 재정의 할 수 있도록 두 조건이 있습니다

  • 슈퍼 클래스의 프로퍼티 추상 속성이 true로 설정되어
  • 슈퍼 클래스의 property SetAccess 및 GetAccess로 설정 속성을 모두 가지고 비공개

아니요. 이렇게하는 것이 좋습니다. Liskov Substitution Principle을 위반합니다. 테이블을 받아들이도록 작성된 함수는 서브 테이블을 받아 들여 제대로 작동 할 수 있어야합니다. 이러한 함수가 PropA에 액세스하면 subTable을 전달할 때 실패합니다.