学习笔记----MATLAB面向对象编程入门02--类的方法、构造函数

本系列内容为《MATLAB面向对象编程–从入门到设计模式》学习笔记,特此说明。

定义类的方法

类的方法(Method)一般用来查询(Query)对象的状态,或者向对象发出一个命令(Command),比如操作对象中的数据。在MATLAB面向对象编程中,类方法的定义要放在method block中,和一般函数定义类似,方法的定义以关键词function开始,以关键词end结束。

......
methods
    function [returnValue]=functionName(arguments)
        ......
    end
end

若成员方法代码量比较大,可以在类定义中仅给出函数的声明,把函数实现放到一个独立的文件中。

说明:

  1. 这种方法需要创建一个@classname的文件夹,然后把类的定义和方法的实现都放到该文件夹中,然后在@classname的外部调用该类的构造函数。
  2. 某些函数不能采用这种方式,比如类的Constructor和Destructor(析构函数),以及Static方法,都必须在类的定义中实现。

调用类的方法

点调用方式:obj.memberFunction(arg1,arg2)

函数调用方式:memberFunction(obj,arg1,arg2)

点调用和函数调用类方法的区别

虽然两种方法基本等价,但仍有一些细微的区别:

  1. 使用点调用方式符合面向对象的风格,程序的可读性高,这是施加在对象上的一种操作。使用函数调用方式满足传统的面向过程的编程习惯,在某些情况下,兼容旧的MATLAB代码。
  2. 使用点调用可以清楚的表示MATLAB调用的时成员方法还是函数。

类的构造函数

构造函数(Constructor)是一种特殊的成员方法:

  1. Constructor和类的名称相同,用来创造类的实例。
  2. MATLAB类定义中只能有1个Constructor·。
  3. Constructor有且只能有一个返回值,且必须是新创建的对象,这是唯一创建一个新的对象的方式。
classdef Point2D < handle
    properties
        x
        y
    end
    methods
        function obj = Point2D(x0,y0) %返回值必须是一个obj
            obj.x=x0;
            obj.y=y0;
        end
    end
end

>> clear classes;
>> p1=Point2D(1.0,2.0);  %使用构造函数创建对象

在构造函数中给属性赋值

在Constructor中也可以给对象的属性赋值。即使在property block中已经提供了默认值,Constructor中赋的新值也将取代property block中的默认值。

classdef Point2D < handle
    properties
        x=cos(pi/2); %Constructor被调用之前x的默认值
        y=sin(pi/3); %Constructor被调用之前y的默认值
    end
    methods
        function obj = Point2D(x0,y0) %返回值必须是一个obj
            obj.x=x0;   %新的x0,y0将会取代初值
            obj.y=y0;
        end
    end
end

MATLAB在声明一个对象时的工作顺序是:先装载类的定义,然后再调用构造函数,这时属性被重新赋值

如何让构造函数接受不同数目的参数

由于MATLAB是弱类型检查的解释性语言,不能通过函数函数重载的方式找到相匹配的函数,但是可以通过参数数目(nargin)的不同来选择不同的代码。

classdef Point2D < handle
    properties
        x=cos(pi/2); %Constructor被调用之前x的默认值
        y=sin(pi/3); %Constructor被调用之前y的默认值
    end
    methods
        function obj = Point2D(x0,y0) 
            if nargin == 0  % 如果没有提供参数
                obj.x=cos(pi/2);
                obj.y=sin(pi/3);
            else if nargin == 2 %如果提供了参数
                obj.x=x0;
                obj.y=y0;
            end
        end
    end
end

默认构造函数

默认构造函数(Default Constructor)一般性定义:不带任何参数的构造函数

可以把默认构造函数理解成构造函数内部可以处理nargin==0的情况,并且返回新构建的对象的那部分代码。

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值