gpt4 book ai didi

matlab - 在 Matlab 中使用父类(super class)函数修改子类属性

转载 作者:太空宇宙 更新时间:2023-11-03 20:35:38 24 4
gpt4 key购买 nike

我的子类与我的父类(super class)具有相同的属性。这看起来像下面这样

classdef superclass < handle
properties
a
b
c
methods
function sup = superclass(...)
sup.create(...)
end

classdef subclass < superclass
properties
a1
b1
c1
methods
function sub = subclass(...)

现在我希望子类的构造函数首先初始化父类的属性

    sub@superclass()

然后(这是我卡住的地方)子类构造函数再次初始化所有值 a1、b1、c1。由于初始化属性的过程在 sup 和 sub 之间没有变化,我想像这样重用它:

    function sub = subclass(args1, args2)
sub@superclass(args1)
sub.create(args2)

如果不为子类编写新的“创建”函数,我怎样才能做到这一点?

最佳答案

一种可能性是重构 create 方法以返回三个值(而不是对属性进行硬编码),然后您可以在父类(super class)和子类中调用它:

[sup.a,sup.b,sup.c] = sup.create(...);

[sub.a1,sub.b1,sub.c1] = sub.create(args2);

在哪里

classdef superclass < handle
methods (Access = protected)
function [x,y,z] = create(obj, args)
x = ..; y = ...; z = ...;
end
end
end

或者,您也许可以使用动态字段名称来抽象该部分:

propname = 'a';
obj.(propname) = 0;

并让 create 方法接收包含要填充的属性名称的字符串元胞数组。

关于matlab - 在 Matlab 中使用父类(super class)函数修改子类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17992963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com