我有两个类,class1和class2。 Class2继承了class1中的所有属性,并具有一些附加属性,例如:
classdef class1
properties
PropA
end
methods
function instance1 = class1(arg1)
...
end
end
end
classdef class2 < class1
properties
PropB
end
methods
function instance2 = class2(arg2)
instance2 = instance2@class1(arg1)
...
end
end
我调用class2的构造函数
instance2 = class2(arg2)
并随后想知道instance2的哪些属性是继承的(即PropA)。
是否可以确定继承class2的哪些属性,而无需创建class1的实例并随后比较属性?如果是这样,那么这样做的有效方法是什么?
答案 0 :(得分:1)
您可以通过meta-classes确定此信息。在这种情况下,要查找继承的class2的属性(例如,未由class2定义):
mcls = ?class2;
allProperties = mcls.PropertyList;
definedByClass2 = [allProperties.DefiningClass] == mcls;
inheritedProperties = allProperties(~definedByClass2);
propertyNames = {inheritedProperties.Name}
请注意,您不需要 类的实例来确定此信息。