2009-04-17 70 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
  • 超類屬性都有了SetAccess和GetAccess的屬性設置爲私人

我也不認爲這樣做是一個好主意。它違反了Liskov Substitution Principle。寫入接受表的函數也應該能夠接受一個子表,並且能夠正常工作。如果這樣的函數訪問了PropA,那麼在傳遞一個子表時會失敗。