Oop 检查和编辑对象的私有/受保护属性

Oop 检查和编辑对象的私有/受保护属性,oop,matlab,private,protected,Oop,Matlab,Private,Protected,在Matlab2011b中,我有一些类具有许多私有或受保护的类属性。这是经过设计的,因为我不希望这些文件被我的类自己的getter/setter之外的任何东西查看、可读、写等等 然而,在开发过程中,有时我想了解这些属性的状态。类对象可以在工作区中进行检查,但是当我通过双击工作区中的对象来访问变量编辑器工具时,私有/受保护属性都不可见 我可以理解这可能是出于设计,但我希望有一个我缺少的设置可以让我查看它们。如果您不想修改用于调试的属性,那么可以使用调试器检查私有/受保护的变量。为了方便起见,您甚至

在Matlab2011b中,我有一些类具有许多私有或受保护的类属性。这是经过设计的,因为我不希望这些文件被我的类自己的getter/setter之外的任何东西查看、可读、写等等

然而,在开发过程中,有时我想了解这些属性的状态。类对象可以在工作区中进行检查,但是当我通过双击工作区中的对象来访问变量编辑器工具时,私有/受保护属性都不可见


我可以理解这可能是出于设计,但我希望有一个我缺少的设置可以让我查看它们。

如果您不想修改用于调试的属性,那么可以使用调试器检查私有/受保护的变量。为了方便起见,您甚至可以编写一个方法将您带入调试器,这样您就不必手动设置停止:

classdef testObj_debug
    properties (Access=private)
        p1 = 4;
    end

    methods (Hidden)
        function checkProps(obj)
            keyboard
        end
    end
end

如果您调用
to=testObj_debug,to.checkProps
,您将访问调试模式,在该模式下,隐藏属性
p1
可以访问和检查。

在开发类时,我将所有属性设置为public-我希望能够看到所有属性。为什么不在调试时将其设置为public?是的,当然是公共工程。仅仅为了调试我的代码而被要求这样做似乎是错误的。在其他语言(C,C++等)中,调试器对私有/受保护变量没有任何疑虑。我只是希望有一个我忽略的方便功能。@RyanEdwards:事实证明,调试器在Matlab中查看私有/受保护的变量时也不会感到不安。使用checkProps方法进入对象并四处窥探的奇妙技巧。谢谢。你知道我在哪里可以把checkProps()方法放到父类中,并让它被我所有的类继承吗?这将是一种更方便的使用此工具的方法,无需将其添加到我感兴趣的每个类中。@RyanEdwards:我有两个主要的父类:
myHandle
myValue
。它们包含我希望每个类都具有的所有方法。因此,对于句柄类,我编写
classdef someHandleClass
,对于
someHandleClass
的子类,我编写
classdef mySub
,所有内容都被继承。@Jonas,我尝试了你的技巧,在基类中放入
checkProps
方法,并用派生类继承它,但基类方法似乎无法访问派生类的私有/受保护成员。因此,据我所知,
checkProps
方法必须显式地写入到您想要使用它的每个类中。这和你的理解有冲突吗?我使用的是Matlab2014b(预发行版)。@DanielGolden:我有点惊讶,您无法从继承的函数访问这些属性,但只要该方法在复制粘贴到其他类时有效,我猜它就可以完成任务。