2009-04-17 9 views
3

Question à propos de sous-classe dans matlab, sous le nouveau système de classe. J'ai la classe A avec quelques propriétés protégées:Matlab sous-question question

classdef Table < Base 

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

Je voudrais faire une sous-classe avec quelques fonctionnalités spécialisées, et limiter davantage l'accès à propA. (c'est-à-dire rendre l'accès privé dans la sous-classe). Ma première pensée a été:

classdef subTable < Table 

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

Cependant, dans l'aide, il dit: « Vous devez définir les méthodes d'accès aux propriétés dans un bloc de méthodes qui spécifie aucun attribut. » Voilà pour cette idée.

Des idées?

Répondre

4

Je ne crois pas que ce soit possible. De MATLAB Documentation:

Il n'y a que deux conditions qui vous permettent de redéfinir les propriétés superclasse:

  • La propriété superclasse attribut Résumé est défini sur true
  • La propriété superclasse possède à la fois les attributs SetAccess et GetAccess réglé sur privé

Je ne pense pas que ce serait une bonne idée. Il viole le Liskov Substitution Principle. Les fonctions écrites pour accepter une table doivent également pouvoir accepter une sous-table et fonctionner correctement. Si une telle fonction accédait à PropA, elle échouerait lorsqu'elle passerait une sous-table.