从错误中可以看出,

you cannot instantiate an abstract class(详见塞巴斯蒂安的回答).但是,有一个叫做

matlab.mixin.Heterogeneous的特殊超类,您可以通过这个类创建一个不同类的数组.

首先,从Matlab.mixin派生.异构的Shape.m:

classdef (Abstract) Shape < handle & matlab.mixin.Heterogeneous

然后在测试脚本中,从圆形或矩形初始化形状:

shapes = Circle.empty();

当你运行循环,数组将改变类:

>> shapes

shapes =

1x2 heterogeneous Shape (Rectangle, Circle) array with no properties.

>> shapes(1)

ans =

Rectangle with no properties.

>> shapes(2)

ans =

Circle with no properties.

这应该是所有你需要的,但是为了对异构数组进行额外的控制,可以覆盖matlab.mixin.Heterogeneous的the getDefaultScalarElement method来指定默认对象.抽象基类应该覆盖这一点:

Override this method if the Root Class is abstract or is not an appropriate default object for the classes in the heterogeneous hierarchy. getDefaultScalarElement must return an instance of another member of the heterogeneous hierarchy.

假设您希望默认对象为来自Shape的对象数组的“Circle”:

methods (Static, Sealed, Access = protected)

function default_object = getDefaultScalarElement

default_object = Circle;

end

end

现在,从Shape导出的对象数组中缺少元素将被填充为Circle对象:

>> clear r

>> r(2) = Rectangle

r =

1x2 heterogeneous Shape (Circle, Rectangle) array with no properties.

>> r(1)

ans =

Circle with no properties.

>> r(2)

ans =

Rectangle with no properties.

matlab创建数组对象,如何在MATLAB中创建一个抽象类对象数组?相关推荐

  1. vue 递归创建菜单_如何在Vue中创建类似中等的突出显示菜单

    vue 递归创建菜单 by Taha Shashtari 由Taha Shashtari 如何在Vue中创建类似中等的突出显示菜单 (How to Create a Medium-Like Highl ...

  2. 如何在mysql中创建过程_如何在MySQL 中创建存储过程?

    问题阐述 自MySQL 5.0 开始,MySQL 就支持存储过程.存储过程是一些被用户定义的SQL 语句集合.一个存储程序是可以被存储在服务器中的一套SQL 语句.存储过程可以被程序.触发器或另一个存 ...

  3. 创建jira sprint_如何在Excel中创建高级sprint燃尽图

    创建jira sprint SCRUM is a great way to manage all sorts of tasks including sprints, but you don't hav ...

  4. 创建组groupadd_如何在Linux中创建组– groupadd命令

    创建组groupadd In this tutorial, we will learn how to create a Group in Linux using groupadd command. 在 ...

  5. 如何在mysql中创建连接_如何在MySQL中创建新用户并开启远程连接访问?

    如何在MySQL中创建新用户并开启远程连接访问? 发布时间:2020-05-21 14:55:19 来源:亿速云 阅读:176 作者:鸽子 下面由mysql教程给大家介绍MySQL创建新用户并开启远程 ...

  6. c++定义一个动态对象数组_如何在Python中自定义一个可被调用的对象实例?

    前言 在关于Python描述符函数的详解三篇中,我们有提到如何基于类创建一个"描述符函数",之所以能够基于类创建这样一个概念,是因为用到了类中的__call__属性,从前述文章中可 ...

  7. python中如何创建包_如何在Python中创建命名空间包?

    TL:博士: 在Python3.3上,您不必做任何事情,只要不在名称空间包目录中放置任何__init__.py,它就可以工作了.在pre-3.3中,选择pkgutil.extend_path()解决方 ...

  8. javascript字典中添加数组_如何在 JavaScript 中更好地使用数组

    在 freeCodeCamp 社区阅读原文. 本文短小精悍,我保证.在过去的数个月里,我注意到在我审阅的 pull request 中有四个(关于数组使用的)错误经常出现.同时,我自己也会犯这些错误, ...

  9. vue在日历表上面创建事件_如何在R中创建颜色编码的日历

    vue在日历表上面创建事件 用颜色编码的日历可以快速简便地查看您是否实现了日常目标. 您是否符合销售或社交媒体帖子等日常业务指标? 或者,您如何实现个人目标,例如每天锻炼? 乍一看,您可以了解自己的工 ...

  10. java如何实例化集合_如何在java中实例化一个Queue对象?

    Queue是一个接口,这意味着你不能直接构造一个Queue . 最好的select是构造一个已经实现Queue接口的类,如下所示: AbstractQueue , ArrayBlockingQueue ...

最新文章

  1. VS2015 将*.xaml.cs文件包裹在*.xaml文件下
  2. 商场专柜私收银现象治理要点
  3. cadence遇到的问题(持续更新)
  4. 使用 npm 命令查看某个 npm 开发包明细
  5. java in out 参数_总是避免Java中的in-out参数?
  6. 收藏 | 深度学习之Numpy基础入门教程!
  7. [LeetCode] 860. 柠檬水找零 lemonade-change(贪心算法)
  8. OpenCasCade拓扑几何(拉伸,扫略,旋转)
  9. MISRA C_2012规则翻译、解读、示例
  10. vscode之 wget下载zip文件并unzip解压zip文件
  11. 学习某一门技术的步骤(韩顺平老师提供)
  12. 【C++要笑着学】缺省参数 | 全缺省与半缺省 | 函数重载
  13. Matplotlib可视化②——3D绘制散点图曲面图折线图等高线图
  14. 手游平台开发需要哪些人员构成?
  15. kettle An error occurred, processing will be stopped: 错误 解决方法
  16. 九大狗年生肖宝宝取名原则
  17. 查看端口状态及端口占用情况
  18. 运维体系 - IT Service CMM - IT 服务能力成熟度模型
  19. 基于canvas实现温度热力图,温度云图(一)--实现温度分布图
  20. 【Windows】如何删除磁盘管理中的恢复分区

热门文章

  1. 本科专业计算机课程,本科计算机专业有哪些课程
  2. windows上编译,使用libtorrent
  3. Linux命令之文件与文件夹的拷贝
  4. 使用QT遍历Json文档及搜索子对象
  5. 开源wiki系统推荐wiki.js, github上16500+ star,是带数据库的
  6. 实对称矩阵的相似对角化
  7. linux双网卡连不上网,linux 双网卡配置问题
  8. 博图注册表删除方法_安装西门子软件反复提示重启电脑的解决方法
  9. 用JS实现视频播放器
  10. 转置矩阵,矩阵的行列式,伴随矩阵,逆矩阵的概念及C#求解