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

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(使用前将#替换为@)

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

  • Java - 强制执行已实现的方法

    我有三门课 但我有问题 它们被命名为 GameScene StageScene StageOne 我的问题是我想在 StageScene 中实现初始化 但仍然强制 StageOne 实现它 这样每当有人使用 StageOne 对象 stag
  • 显式移动构造函数

    尝试编译以下代码 struct Foo explicit Foo void explicit Foo Foo rhs Foo bar void return Foo 出现以下错误 调用 Foo 的隐式删除复制构造函数 嗯 很明显复制者被隐式
  • 如何检查一个对象是否“完全”是一个类,而不是派生类?

    有任何方法可以确定一个对象是否是exactly一个类而不是它的派生类 例如 class A X class B A 我可以做这样的事情 bool isExactlyA X obj return obj is A obj is B 当然如果有
  • 什么是 ANN 中的纪元以及它如何转换为 MATLAB 中的代码?

    我试图理解 并可视化 训练人工神经网络的时代到底是什么 我们有一个包含约 7000 个产品的训练集 其中有 10 个特征 输入 这些产品必须根据这 10 个输入分为 7 个类别 我们的 ANN 有 10 个输入 这些输入进入由 10 个神经
  • 使用 MATLAB 进行线路跟踪

    我有一个图像 我想将其转换为逻辑图像 包括线条为黑色 背景为白色 当然 可以使用阈值方法来实现这一点 但我不想使用这种方式来做到这一点 我想通过使用线路跟踪方法或类似的方法来检测它 这是关于视网膜血管检测的 我找到了一个article ht
  • Java:接口可以包含其中定义的常量变量吗?

    我可以创建吗public static final接口中的变量 我可以保留这些文件中定义的一些常见常量值吗 是的你可以 public interface Constants public static final int ZERO 0 然而
  • MVC 3 将实体作为接口传递

    我目前正在开发一个 MVC 3 项目 使用 Ninject 作为我的 DI 业务对象存储在单独的程序集中 我遇到了控制器参数的问题 当回发 CRUD 操作时 我收到错误 无法创建接口实例 我知道您无法创建接口的实例 但似乎解决此问题的唯一方
  • 如何从继承的方法中获取派生类的路径?

    如何从继承的方法中获取当前类的路径 我有以下内容 and
  • 如何告诉 mex 链接到 /usr/lib 中的 libstdc++.so.6 而不是 MATLAB 目录中的 libstdc++.so.6?

    现在 MATLAB 2012a 中的 mex 仅正式支持 gcc 4 4 6 但我想使用 gcc 4 7 风险自负 现在如果我直接用 mex 编译一些东西 它会抱怨 usr lib gcc i686 linux gnu 4 7 cc1plu
  • 为什么不允许接口作为注释成员?

    考虑这段代码 Retention RetentionPolicy RUNTIME Target ElementType METHOD public interface Bar Foo foo default FooImpl FooConst
  • Objective-C 继承中@synthesize/@property 的使用

    如果您有一个带有实例变量 foo 的类 A 该类具有 property synthesize 指令 并且类 B 继承自类 A 那么它是否还需要 property synthesize foo 我问的原因是因为当我尝试使用 B 类的 foo
  • 使用Table Per Subclass时如何确保数据完整性?

    我正在使用每个子类的表Grails 中的策略通过设置tablePerHierarchy静态的性质mapping我的超类中的字段为 false 这样 Grails 会为我的超类创建一张表 并为我的每个子类创建一张附加表 然而 虽然超类和子类记
  • 如何将一个接口方法的返回类型定义为另一个接口?

    我对接口和抽象类很陌生 我想创建几个接口来定义购物车系统对象的核心方法和变量 然后我想创建实现核心功能的抽象类 这个想法是 其他类可以以稍微不同的方式针对不同的项目使用它们 这是我的 精简的 界面 public interface ICar
  • 理解高斯混合模型的概念

    我试图通过阅读在线资源来理解 GMM 我已经使用 K 均值实现了聚类 并且正在了解 GMM 与 K 均值的比较 以下是我的理解 如有错误请指出 GMM 类似于 KNN 在这两种情况下都实现了聚类 但在 GMM 中 每个簇都有自己独立的均值和
  • Spring.NET 和构造函数拦截器

    我正在尝试在构造时对对象进行一些 AOP 并找到了 IConstructorInterceptor 这对于我想要的东西来说是完美的 但它似乎不起作用 http jira springframework org browse SPRNET 2
  • 如何更改Plotyy第二轴的颜色和字体大小?

    我使用 MATLAB 的plotyy 函数绘制了两条曲线 AX H1 H2 plotyy voltage span amplitude voltage span Ca SR The problem is that I cannot chan
  • MATLAB - 冲浪图数据结构

    我用两种不同的方法进行了计算 对于这些计算 我改变了 2 个参数 x 和 y 最后 我计算了每种变体的两种方法之间的 误差 现在我想根据结果创建 3D 曲面图 x gt on x axis y gt on y axis Error gt o
  • 触摸屏书写时需要注意什么?

    我正在启动一个新项目 其中涉及为机器开发一个接口 用于测量镜片的楔形和圆度 并将信息存储在数据库中并生成报告 我们很有可能会在这台机器上安装触摸屏 这样它就不需要鼠标或键盘了 我没有任何开发全尺寸触摸屏的经验 所以我正在向你们寻求建议 提示
  • CSS 继承、别名和其他很酷的东西

    有一天 我随机浏览网页 发现了一些程序 可以让你编写 CSS 别名和其他很酷的东西 我现在不记得了 举个例子 我记得你可以这样做 myclass background color red greenfont 其中 greenfont 在其他
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节

随机推荐

  • 如何在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 我的大多数属