是否可以在不实例化父类的情况下确定在Matlab中继承对象的哪些属性?

时间:2015-01-06 16:30:57

标签: matlab oop inheritance properties

我有两个类,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的实例并随后比较属性?如果是这样,那么这样做的有效方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以通过meta-classes确定此信息。在这种情况下,要查找继承的class2的属性(例如,未由class2定义):

mcls = ?class2;
allProperties = mcls.PropertyList;
definedByClass2 = [allProperties.DefiningClass] == mcls;
inheritedProperties = allProperties(~definedByClass2);
propertyNames = {inheritedProperties.Name}

请注意,您不需要 类的实例来确定此信息。