MATLAB: Accessing subclass methods from abstract superclass

abstract classMATLABmethodsoopsubclass

Hi all,
Longtime listener, first time caller. I'm attempting to augment an abstract superclass with a method that calls (concrete) methods from a subclass. In the example below, I would like to call ChildClass.doC() and see, in the Command Window:
Child class, doA()
Child class, doB()
Here is my MWE.
classdef (Abstract) ParentClass
%PARENTCLASS Testing properties of abstract classes
methods (Abstract = true, Static = true)
doA();
doB();
end
methods (Static = true)
function doC()
doA();
doB();
end
end
end
classdef ChildClass < ParentClass
%CHILDCLASS Testing properties of abstract classes
methods (Static = true)
function doA()
disp('Child class, doA()')
end
function doB()
disp('Child class, doB()')
end
end
end
Upon the call to ChildClass.doC(), what I would like is for MATLAB to call ParentClass.doC(), realize that doA() and doB() are abstract methods, and go back `up' the call chain to ChildClass.doA(), ChildClass.doB(). I've been told this is a construct in C++, not sure if its possible here.
I'm doing this because I have many classes that inherit from ParentClass, and each implement their own version of doA(), doB(). These functions are typically used together, and I would like to make a `shorthand' a. la doC() in the parent class without having to write a seperate doC() method for each subclass. Thanks.

Best Answer

classdef (Abstract) ParentClass
%PARENTCLASS Testing properties of abstract classes
methods (Abstract = true, Static = true)
doA();
doB();
end
methods (Static = true)
function doC()
doA();
doB();
end
end
end
This doesn't do what you think. Normally Static methods are called using the name of the class that defines them, though they can be called on class instances like non-Static methods. Since doC is Static and accepts no inputs, it can only be called via a class name.
Nothing in the code you've written makes it possible to call any class methods doA or doB. They are not called as Static methods with a class name, nor do they accept any inputs. So there's nothing telling MATLAB it should call the methods of either ParentClass or ChildClass. Unless there are functions doA and doB (not methods) ParentClass.doC() would error.
If you use per isakson's approach, doA and doB probably shouldn't be Static in either ParentClass or ChildClass.