我正在使用MATLAB面向对象编程编写一些代码,试图构建一个系统模拟器。
我正在尝试创建一个代表完整系统的类。该系统依赖于2个子模块:发射器和接收器。
这两个模块我也使用类实现,因为它们可能在其他未来场景中有用。
我的问题是,我希望发送器和接收器的某些属性仅在它们被创建为独立实例时才具有(SetAccess = public),而不是来自系统类。这是因为当整个系统的一部分时,用户不应单独对单独的模块进行更改。
我试图将(SetAccess = protected)放入我的系统类中的发送器和接收器实例,但这并不妨碍我通过执行以下操作从命令窗口更改其参数:
system.transmitter.memory = value
。
在没有创建不同的发射器和接收器类定义的情况下,有没有办法实现这种行为?
我对OOP很陌生,所以让我知道这个我想要实现的行为是错误的。
编辑:我只是放(SetAccess = protected),因为我希望我的子类的属性可读但不可写
答案 0 :(得分:0)
您需要将SetAccess和GetAccess都设置为受保护。操作
system.transmitter.memory = value;
首先获取具有公共GetAccess的属性发送器,然后在具有公共访问内存属性的发送器上设置内存属性。
仅在系统中设置SetAccess会停止发送器属性的公共设置。所以,
system.transmitter = Transmitter;
会抛出错误。