调用构造函数的时候分配自定义类的属性

5视图(30天)
假设,如果有两类:
classdefmyclass1
属性
myprop1myclass2
结束
结束
classdefmyclass2
属性
myprop2(1,1)的两倍= 2
myprop3(1,1)的两倍= 3
结束
结束
当创建一个myclass1对象,myprop1将空myclass2类型对象。似乎myclass2不被调用的构造函数,因此不要指定默认值。有一些“捷径”与intendend myprop1设置默认值吗?还是我必须显式地声明一个构造函数myclass1和调用的构造函数myclass2吗?
编辑:它实际上是可以从属性部分中直接调用类的构造函数如下所示:
classdefmyclass1
属性
myprop1myclass2= myclass2
结束
结束
然而这导致另一个问题,c f。 //www.tianjin-qmedu.com/help/matlab/matlab_oop/expressions-in-class-definitions.html 这样,表达式(构造函数)是评价只有一次当类首次实例化,然后分配给所有生成的对象进一步创建实例。这是棘手的尤其是myclass2处理类,因为在这种情况下,后续更改myprop1值在一个myclass1对象将适用于所有myclass1对象。
那沉这艘船还是有另一种方法我不知道吗?
(SL:删除无关的:从超链接)

接受的答案

马特·J
马特·J 2023年3月12日
编辑:马特·J 2023年3月12日
后续更改myprop1值在一个myclass1对象将适用于所有myclass1对象。
这是不正确的。您可以覆盖默认myprop1值与其他myclass2实例。将相互独立的不同实例无论myclass2是一个处理或价值类:
obj = myclass1;
obj.myprop1 = myclass2;
也,而不是分配一个默认myprop1值,您可以编写一个构造函数myclass1分配一个新的、独立的myclass2实例每次被称为:
classdefmyclass1
属性
myprop1
结束
方法
函数obj = myclass1
obj.myprop1 = myclass2;
结束
结束
结束
2的评论
史蒂文的主
史蒂文的主 2023年3月12日
看到 这个文档页面 更多信息的一些注意事项需要考虑在创建对象的属性包含其他对象。

登录置评。

更多的答案(0)

类别

找到更多的在属性帮助中心文件交换

标签

s manbetx 845


释放

R2022b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!