与超类和子类构造函数接口

2024-05-02

我在 matlab 文档和之前有关使用 matlab 继承和类构造函数创建接口的问题中找不到帮助。为了使其整洁,放在一个包内。

我可以将其压缩如下,而不是拖拽代码:

一套+MyPkg有一个超类Super和一些子类Sub1 Sub2...我的大多数属性和方法都是在 Super 中定义的,这样Sub1 and Sub2实际上只是为了将它们的构造函数用于简单的例程或者可能是从 Super 重载的一些方法而存在。

那么我该如何编写 classdef 和构造函数来支持可以使用以下调用的接口:

a = MyPkg.Super(args).Sub1(args)
b = MyPkg.Super(args).Sub1(args).Sub1Method

在本例中,为了可读性和组织性,我想将与 Super 相关的参数与与 Sub1 相关的参数分开。

欢迎提问。

EDIT:

在考虑下面接受的答案和一些浏览之后,我得出的结论是,上面显示的界面并不真正符合 OO 的精神,对于我的数据分析应用程序来说,更合适的方法是由一个句柄类和一个填充对象或对象属性元胞数组的构造函数。因为该类是一个句柄类,所以可以使用其上的方法来生成所需的方法。即以下

% in +MyPkg\

classdef Super < handle
    properties
        outputArray
    end
    methods

    function self = Super(args)
        self.outputArray=load_values(args);
    end

    function out = do_analysis(self,params)
        % do some analysis
    end

    end
end

然后使用这个:

data1 = MyPkg.Super(args)
% Populate the outputArray
analysis1 = data1.do_analysis(params)

etc.,

希望能帮助其他人处理这些问题


关于你的问题,如果你使用继承,你就不能。子类只能调用直接超类构造函数,并且子类只能调用超类构造函数。Ref. http://www.mathworks.com/help/techdoc/matlab_oop/brenzg6.html

像这样公开超类确实破坏了继承的基础。如果您需要这种访问权限,也许您应该考虑另一种模型,也许是组合(“有一个”而不是“是一个”)?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与超类和子类构造函数接口 的相关文章

  • 垂直子图的单一颜色条

    我想让下面的 MATLAB 图有一个沿着两个子图延伸的颜色条 像这样的事情 使用图形编辑器手动完成 Note 这与提出的问题不同here https stackoverflow com questions 39950229 matlab t
  • C++ 模板中的名称查找

    我有一些 C 代码 如果没有 fpermissive 选项 就无法再编译 这是我无法分享的专有代码 但我认为我已经能够提取一个简单的测试用例来演示该问题 这是 g 的输出 template eg cpp In instantiation o
  • 如何为带有继承的 C++ 类编写 C 包装器

    我只是想知道是否有一种方法可以为具有继承的 C 类创建 C 包装 API 考虑以下 class sampleClass1 public sampleClass public int get return this data 2 void s
  • 将数据提示堆栈放在轴标签顶部,并在轴位置发生更改后更新轴标签

    此问题仅适用于 unix matlab Windows 用户将无法重现该问题 我在尝试创建位于 y 轴标签顶部的数据提示时遇到问题 下图很能说明问题 正如您所看到的 在 ylabel 附近创建的数据提示将到达 ylabel 文本的底部 而期
  • S4 类 [(子集)带有附加参数的继承

    这是一个扩展在 R 中的访问器函数中使用 callNextMethod https stackoverflow com q 24875284 2752888 2017 03 25 更新 为了说明如何仅在加载方法时失败 但在构建的包中时不会失
  • 什么是多重重继承?

    我将以下称为 多重重新继承 直接继承一个类一次 并通过继承其一个或多个后代来间接继承一次或多次 通过继承一个类的两个或多个后代来间接继承一个类两次或多次 我想知道它是否存在以及如何明确访问嵌入的子对象 1 Professional C 2n
  • C# 中 getter 和 setter 的接口

    当我读到这里时http msdn microsoft com en us library 75e8y5dd 28v VS 100 29 aspx http msdn microsoft com en us library 75e8y5dd
  • 将构造函数传递给 Array.map?

    我怎样才能做这样的事情 var a 1 2 3 4 a map Date constructor 此代码在 Google V8 上引发错误 SyntaxError Unexpected number 我也尝试过 a map Date con
  • Groovy - 在对象实例化期间忽略映射中的额外属性

    有没有办法让 groovy 在对象实例化期间忽略映射中的额外属性 例子 class Banana String name def params name someGuy age 13 new Banana params 在这个例子中 gro
  • 在 MATLAB 中模拟 C++ 模板

    我试图找出创建 C 模板或 Java 通用对象的替代方案的最佳方法 出于多种不同的原因 我过去曾多次想这样做 但现在我想做的是为几个相关的类创建 saveobj 和 loadobj 函数 我的想法是 我想要一组通用的例程来创建默认结构 然后
  • 从派生模板类调用函数

    我的基类 Element h class Element public Element virtual Element not sure if I need this virtual Element plus const Element v
  • 如何在Matlab中打印带有千位分隔符的整数?

    我想使用逗号作为千位分隔符将数字转换为字符串 就像是 x 120501231 21 str sprintf 0 0f x 但随着效果 str 120 501 231 21 如果内置fprintf sprintf做不到 我想可以使用正则表达式
  • 如何正确从表中删除 NaN 值

    在 Matlab 中阅读 Excel 电子表格后 不幸的是 我的结果表中包含了 NaN 例如这个 Excel 表格 将产生此表 其中出现额外的 NaN 列 我尝试使用以下代码片段删除 NaN measurementCells readtab
  • 从父类调用重写的虚拟方法

    假设您正在编写原始 C Object类并且您想要以下功能 object1 object2将比较引用 除非该运算符被覆盖 object1 object2将始终返回对象实际值的倒数object1 object2 所以 举例来说 如果我有一个Bu
  • 命令 A(~A) 在 matlab 中的真正作用是什么

    我一直在寻找找到矩阵非零最小值的最有效方法 并在论坛上找到了这个 设数据为矩阵A A A nan minNonZero min A 这是非常短且高效的 至少在代码行数方面 但我不明白当我们这样做时会发生什么 我找不到任何关于此的文档 因为它
  • Numpy 相当于 MATLAB 的 hist [重复]

    这个问题在这里已经有答案了 由于某种原因 Numpy 的 hist 总是返回比 MATLAB 的 hist 少 1 个 bin 例如在 MATLAB 中 x 1 2 2 2 1 4 4 2 3 3 3 3 Rep Val hist x un
  • 为什么使用 Create 方法而不是使用“new”?

    静态构造函数有什么优点以及什么时候适合使用 public class MyClass protected MyClass public static MyClass Create return new MyClass 然后通过创建该类的实例
  • AXI4 流接口:如何在 HLS 中管理浮点数组以生成硬件加速器并在 RTL 项目中安全地连接它们?

    最后 我想做的是使用 Vivado Design Suite 中具有单精度浮点数组的流接口来构建硬件加速器 HLS 用户指南UG902 http www xilinx com support documentation sw manuals
  • 结构体实现接口安全吗?

    我似乎记得读过一些关于在 CLR 中通过 C 实现结构如何不好的内容 但我似乎找不到任何相关内容 是不是很糟糕 这样做会产生意想不到的后果吗 public interface Foo Bar GetBar public struct Fub
  • C++派生模板类继承自模板基类,无法调用基类构造函数[重复]

    这个问题在这里已经有答案了 我试图从基类 模板 继承 派生类也是模板 它们具有相同的类型 T 我收到编译错误 非法成员初始化 Base 不是基类或成员 为什么 如何调用基类构造函数 include

随机推荐

  • 如何在Python中设置像素的alpha值

    我正在尝试编辑image https drive google com file d 0B8JcwRV HVk0OURrcTFJczhmV2RlUGdMOG0ybldYUVRoamtF view usp sharing以一种将所有白色像素转
  • 在 Ruby 中定义元编程的方法参数

    在 Ruby 中 我们可以使用元编程来定义实例方法 例如 define method hi Hello SO world gt hi hi gt Hello SO world 这样 就可以定义一个带有动态名称 dynamic name hi
  • GNU Make “Abort trap: 6” 在 gcc 调用之后,但是单独执行时调用是有效的

    我正在使用 GNU Make 构建一个很多人都会使用的 C C 项目 makefile 尝试通用 因为该项目中有许多可选文件 每个用户通过 MATLAB 界面选择这些文件 然后通过命令行参数 make target OPTS XYZ 等 将
  • SupportMapFragment 地图为空

    我使用以下代码在 Xamarin Android 中显示地图 private SupportMapFragment mapFragment private GoogleMap map protected override void OnCr
  • 为什么这个 Clojure 减速器 r/fold 没有提供任何性能优势?

    我想知道为什么下面的代码在 r fold 的情况下没有提供加速 我对减速器有什么误解吗 我在一个相当慢的 尽管有 2 个核心 Ubuntu 12 04 开发盒上运行它 通过 emacs 和 lein 运行 每个都有相同的结果 require
  • 为什么 pandas.melt 会弄乱我的数据类型?

    我有一些数据透视代码因错误而失败 pandas core base DataError 没有要聚合的数字类型 我已将问题追溯到之前的调用pandas melt https pandas pydata org pandas docs stab
  • 为什么这个记忆器适用于递归函数?

    我不明白为什么下面的代码是这样的fib以线性而非指数时间运行 def memoize obj Memoization decorator from PythonDecoratorLibrary Ignores kwargs cache ob
  • 将 R 包函数导出到 R 包内的并行集群

    有一些功能 比如function1 在我正在开发的 R 包中 它依赖于辅助函数 例如h function1 and h function2 在我的包裹里 我正在并行化重复调用function1在我的包中的另一个函数中 目前 在我的包中我正在
  • 为什么在DefinitelyTyped中`http.IncomingMessage`定义为接口,而不是类?

    正如 Node js 的文档所述 http IncomingMessage 是一个类 https nodejs org api http html http class http incomingmessage 不是一个接口 那么为什么在D
  • C# 计算 int 数组中值的平均值

    当我尝试打印 int 数组中的值的平均值时 它会打印出与我有值一样多的完全不同的东西 这是什么问题 int numbers numbers new int 5 Console WriteLine give five integer numb
  • jQuery $.ajax 调用 WCF 服务返回 400 错误请求

    更新在最后 我正在使用不熟悉的技术来实现一个想法 我写过一些WCF服务 但从未做过任何高级配置 这是我第一次深入了解 jQuery 前提是我创建一个WCF服务来获取分支信息 由jQuery检索 我的第一次搜索产生了这个页面 http www
  • 有没有办法在不托管网站的情况下呈现网站并共享它?

    我正在为一个项目创建一个 repl it 网站 问题是我的老师要求不要发布该网站 这意味着我无法使用 repl it 来托管它 我想知道是否有任何方法可以制作可以通过 Google Chrome 查看的网站副本 而无需连接到主机 我有所有的
  • 如何暂时停止标题属性显示工具提示?

    我在右键单击时显示了一个弹出 div 我知道这会破坏预期的功能 但 Google 文档会这样做 所以为什么不呢 但是 我在弹出窗口上显示的元素有一个 标题 属性集 该属性集出现在我的分区 我仍然希望工具提示能够工作 但当弹出窗口出现时就不行
  • php 数组用重音符号排序

    我用它来根据姓氏排序 usort fb friends data custom sort function custom sort a b return a last name gt b last name foreach fb frien
  • 哪个 SVG/SMIL DOM 元素具有“beginElement”方法?

    最终 这是针对将在 Firefox 中运行的 Kiosk 风格的应用程序 使用 jQuery 1 6 4 因此答案可能是特定于 Firefox 的 我正在尝试制作动画 SVG 但我正在尝试通过动态插入 SMIL 来为其设置动画 我没有看到任
  • 构建复杂 NSCompoundPredicate 的最佳方法是什么?

    我需要建立一个NSPredicate有很多数据 例如 在 SQL 中我会执行如下操作 SELECT FROM TRANSACTIONS WHERE CATEGORY IN categoryList AND LOCATION IN locat
  • 在ggplot2中按线连接分组点

    我试图将每组的每个蓝点与其相应的红点连接起来 但是 我在使用时遇到问题geom segment 谢谢帮助 repl lt data frame title c A B C A B C diff c 10 06 1 89 12 79 10 0
  • 我可以让 C++ 编译器在编译时实例化对象吗?

    我正在编写一些代码 其中包含大量相当简单的对象 我希望它们在编译时创建 我认为编译器能够做到这一点 但我无法弄清楚如何做到 In C我可以执行以下操作 include
  • 查找一个列表在另一个列表中的值的索引

    我有两个 Python 整数列表 x and y 的所有元素x出现在某处y 而且只有一次 对于每个元素x 我想知道对应值的索引y 然后我想将这些索引设置为一个列表z 下面的代码按照我刚刚描述的方式工作 然而 对于一项任务来说 这似乎有点笨拙
  • 与超类和子类构造函数接口

    我在 matlab 文档和之前有关使用 matlab 继承和类构造函数创建接口的问题中找不到帮助 为了使其整洁 放在一个包内 我可以将其压缩如下 而不是拖拽代码 一套 MyPkg有一个超类Super和一些子类Sub1 Sub2 我的大多数属