matlab 编写类的方法,学习笔记----MATLAB面向对象编程入门05--类的属性和方法的访问权限...

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

public、protected和private权限

从面向过程到面向对象,最显著的区别是,把数据和函数捆绑在一起形成了类,数据变成了属性,函数变成了类的成员方法。

就数据而言,并不是所有被捆绑的数据都有必要提供给外部访问,所以需要对访问权限进行控制。

就程序设计而言,为了尽量避免一个类中的某个行为干涉同一系统中其他类,应该让类仅公开必须让外部知道的内容,而隐藏其他一切不必要的内容,这也叫封装。

Matlabt提供了关键词“Access = private , protected , public”来声明哪些属性和方法是可以公开访问的、受保护的、或者不可以公开的,也就是私有的。

classdef SomeClass < handle

properties(Access = private) %类的私有属性

prop_private

end

properties(Access = protected) %类的保护属性

prop_protected

end

properties %默认情况下是公有(public)的属性

prop_public

end

methods(Access=private or protected or public)

function result = SomeFunction(obj)

...... %代码省略

end

end

end

如果一个属性的特性被设置成 Access = private,这表示只有该类的成员方法可以访问该数据,而子类和其他外部函数或者脚本都无法访问到该成员变量。这也是类方法和普通函数的重要区别之一:类方法可以访问对象中的私有属性。

如果一个属性的特性被设置成 Access = protected ,则表示只有该类的成员方法,还有该类的子类可以访问该数据。

如果一个属性的特性采用默认值,即public,则表示不但在类的定义中,该类的成员方法以及该类的子类的成员方法都可以访问这个成员变量,而且在类之外的函数或者脚本也可以访问这个成员变量。

对于属性的访问权限,还可以再细分成赋值SetAccess和查询GetAccess的权限

......

properties (SetAccess =private,GetAccess = public)

var %说明该属性可以被外界程序查询值,但不能被外部程序赋值,赋值只能在类的内部进行

end

......

tips:

在类内部方法中,可以对属性进行任意访问,没有权限之分。

在属性的定义中,因为MATLAB对所有访问权限的默认值都是public,所以省略 GetAccess = public。

在实际计算中存在这样的需求:一个类的内部数据总的来说是私有的,但要求允许个别的类访问或修改。

classdef A < handle

properties (SetAccess = {?B}) %该属性只允许B对象来修改

val1

end

properties(Access = {?C}) %改属性只允许C对象来访问,对其他对象函数都相当于private

val2

end

end

......

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值