MATLAB 面向对象编程(十二)抽象类

在C++中我们就了解过了抽象类,因为在类没有具象化的时候,我们并不知道该类的详细属性和方法应该怎么定义,比如基类是Shape,包含了周长和面积,子类可以是三角形和正方形,但是这两种形状的面积和周长计算方式是不同的,因此在不知道具体子类的时候我们无法定义Shape中的计算方式。 下面是代码示例: cl

MATLAB 面向对象编程(十一)成员方法共享Static和属性共享constant、persistent

1. 类的成员方法 静态成员方法(Static)也叫做类方法,在前面的loadobj方法中有涉及,它不需要具体的对象就可以调用。 classdef Base1 < handle properties x end methods function

MATLAB 面向对象编程(十)多重继承

多重继承很好理解,举个例子,Sub既属于Base1类,又属于Base2类,具有两个类的特性,那么就需要多重继承,下面是代码: classdef Base1 % Base1.m properties x end methods function

MATLAB 面向对象编程(九)对象的save和load以及自定义方法

当我们使用命令save matlab.mat Point表示将对象Point保存到matlab.mat文件中,load matlab.mat obj表示装置matlab.mat文件中obj的内容。 1. save保存的内容 1.object所属类的名称以及package的名称 2.object所属类

MATLAB 面向对象编程(八)监听器listener

事件(Event)是对象内部的状态改变,事件的发生往往会有一定的相应。改变对象内部状态的叫做发布者,做出相应响应的是观察者。这里需要用到两个函数分别为 addlistener和notify,用于添加监听器和发布事件。 发布事件,不传递信息 看下面的定义: % DataSource.m classde

MATLAB 面向对象编程(七)析构函数delete

Handle类除了构造函数以外还有析构函数,在对象离开作用域或者被销毁的时候会调用析构函数delete,在一般情况下不需要自定义delete方法,除了一些特殊情况下有些内存不能自己释放才需要手动释放。 Value类没有析构函数,但是也可自定义一个delete方法显示调用,比如说a.delete().

MATLAB 面向对象编程(六)Handle类和Value类的set和get方法

set 和get 方法是为对象属性赋值和访问的一个中间层,当我们运行代码 a.x的时候,其实会隐性的调用set.x()方法,下面我们来介绍如何自定义set和get方法。 set方法 Handle类 classdef Point < handle properties x = 0

MATLAB 面向对象编程(五)Value类和Handle类

在之前的文章中,我们都默认使用的类是handle类,因为在定义类的时候都有一句: classdef Point < handle 我们在类的继承中知道,这句代码的意思是 Point是handle类的一个子类,其实我们也可以不加后面的,直接写成: classdef Point 这样声明的类就是一个

MATLAB 面向对象编程(四)类的访问权限 private public protected hidden dependent

在类的属性中,有一些是属于中间变量,外部不需要知道这些数据的值,因此需要对访问的权限进行控制,避免一个类中的行为干涉到其他类,这样的方法也叫“封装”。 一般来说,权限分为三种,public(默认),private 和 protected。 public说明该属性全部可以直接访问,private说明该

MATLAB 面向对象编程(三)类的继承

假设我们有了二维点Point类为基类,这是我们想拓展其成为三维点 Point2类,此时并不需要全部重新构造一个新类,而是在Point的基础上添加需要的属性和方法。 子类会继承所有非私有的属性和方法,可以直接访问和使用,MATLAB默认的继承方法是public,这里我们不讨论访问权限,只讲公有继承。在