2009-04-17 13 views
3

Frage zum Unterklassen in Matlab, unter dem neuen Klassensystem. Ich habe mit einigen geschützten Eigenschaften der Klasse A bekam:Matlab Unterklasse Frage

classdef Table < Base 

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

Ich möchte eine Unterklasse mit einigen speziellen Funktionen machen, und einen weiteren Zugriff auf PROPA zu beschränken. (d. h. den Zugriff in der Unterklasse auf "privat" setzen). Mein erster Gedanke war:

classdef subTable < Table 

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

jedoch in der Hilfe heißt es: „Sie müssen Eigenschaft Zugriffsmethoden in einem Methoden-Block definieren, die keine Attribute angibt.“ So viel zu dieser Idee.

Irgendwelche Ideen?

Antwort

4

Ich glaube nicht, dass das möglich ist. Von MATLAB Documentation:

Es gibt nur zwei Bedingungen, die Sie übergeordnete Klasse Eigenschaften neu zu definieren lassen:

  • Die übergeordnete Klasse Eigenschaft Zusammenfassung Attribut auf true gesetzt ist
  • Die Super Eigenschaft hat sowohl die SetAccess und GetAccess Attribute auf privat

Noch glaube ich, dass dies eine gute Idee wäre. Es verletzt die Liskov Substitution Principle. Funktionen, die zum Akzeptieren einer Tabelle geschrieben wurden, sollten auch eine Untertabelle akzeptieren können und ordnungsgemäß funktionieren. Wenn eine solche Funktion auf PropA zugreift, würde sie beim Übergeben einer Untertabelle fehlschlagen.