Suppressing superclass methods/events
    4 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Daniel Dolan
 am 9 Dez. 2011
  
    
    
    
    
    Bearbeitet: Hamid Ramezani
      
 am 7 Jun. 2021
            Is there a way to suppress super class methods and events? For example, a class based on handle:
     classdef my_class < handle
inherits methods (addlistener, isvalid, etc.) that users of my_class don't need. I want to preserve a clean interface that prevents access to things defined outside of my_class.
2 Kommentare
  Walter Roberson
      
      
 am 9 Dez. 2011
				Would it be enough to hide them somehow, so they don't show up in a normal methods listing? Or do they have to be gone?
Akzeptierte Antwort
  Hamid Ramezani
      
 am 16 Sep. 2019
        
      Bearbeitet: Hamid Ramezani
      
 am 7 Jun. 2021
  
      This is the best you can do to hide the methods which are relared to handle (here superclass). All te methods are hidden except 'isvalid' which is a sealed method of 'handle' class.
classdef myClass < handle
    methods
        function O = myClass()
        end
    end
    methods (Hidden)
        function varargout = findobj(O,varargin)
            varargout = findobj@handle(O,varargin{:});
        end
        function varargout = findprop(O,varargin)
            varargout = findprop@handle(O,varargin{:});
        end
        function varargout = addlistener(O,varargin)
            varargout = addlistener@handle(O,varargin{:});
        end
        function varargout = notify(O,varargin)
            varargout = notify@handle(O,varargin{:});
        end
        function varargout = listener(O,varargin)
            varargout = listener@handle(O,varargin{:});
        end
        function varargout = delete(O,varargin)
            varargout = delete@handle(O,varargin{:});
        end
    end
end
0 Kommentare
Weitere Antworten (1)
  Daniel Shub
      
      
 am 10 Dez. 2011
        I don't think so. I think this would violate the idea that an object of a subclass is also an object of the superclass. Maybe you do not want to subclass the handle class, this will reduce the number of inherited methods.
You also could switch to the old OOP system where you had to roll your own methods for nearly everything and hence had more control.
It is unclear why isvalid, and the like, would give individuals access to things outside your class.
You also could overload subsref to prevent calls to addlistener and isvalid. This could get ugly though.
0 Kommentare
Siehe auch
Kategorien
				Mehr zu Handle Classes finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



