matlab中类的用法

1.用classdef时,要重新建立一个m文件,并且文件名与classdef后面的名称一样
2.写好后运行会报错,直接点保存就行,修改好便可以直接用
3.直接在m文件里调用会报错,在命令行窗口调用就正常了
4.成员方法改不了类里面的属性,只能在构造方法里改,只有继承类时才可以改(classdef Cat < handle)

classdef Cat < handle  %cat在这里继承handle
    %成员属性
    properties
        name
        age
        color
    end
    
    properties(Access=private)%不可访问   私有属性
        bornyear
    end
    %成员方法
    methods
        %构造方法,初始
        function obj = Cat(name,age,color,year)
            obj.name = name;
            obj.age = age;
            obj.color = color;
            obj.bornyear=year;
        end
        %成员方法
        function write(cc)%必填一个参数,名称任意
            disp(['123' cc.name]);
        end
        %成员方法改不了类里面的属性,只能在构造方法里改
        %只有继承类时才可以改
        function ch_name(obj,name)   
            obj.name=name;
        end
        function read(obj)
            disp(['在这里也不可以显示出来私有属性-->' obj.bornyear '<--没数据']);
        end
        function speakk(obj)
            obj.speak();
        end
    end
    methods(Access=private)
        function speak(obj)
            disp('私有方法可以在其他共有方法函数中使用,但不能单独用');
        end
    end
end
>> cat=Cat('xiaohu',3,'red',2021)

cat = 

  Cat - 属性:

     name: 'xiaohu'
      age: 3
    color: 'red'

>> cat.name

ans =

    'xiaohu'

>> cat.bornyear
类 'Cat' 没有公共属性 'bornyear'>> cat.name=5

cat = 

  Cat - 属性:

     name: 5
      age: 3
    color: 'red'

>> cat.read()
在这里也不可以显示出来私有属性-->ߥ<--没数据
>> cat.speak()
无法访问类 'Cat' 中的方法 'speak'>> cat.speakk()
私有方法可以在其他共有方法函数中使用,但不能单独用
>> cat.ch_name('xiaoyu')
>> cat

cat = 

  Cat - 属性:

     name: 'xiaoyu'
      age: 3
    color: 'red'

>> a=[1 2 3];
>> cat=Cat(a,3,'red',1990)

cat = 

  Cat - 属性:

     name: [1 2 3]
      age: 3
    color: 'red'

>> cat.name(1)

ans =

     1

>> b.c=30;b.p=60;
无法执行赋值,因为此类型的变量不支持使用点进行索引。
 
>> fff.c=30;
>> fff.g=50;
>> cat1=Cat(fff,3,'red',1990)

cat1 = 

  Cat - 属性:

     name: [1×1 struct]
      age: 3
    color: 'red'

>> cat1.name.c

ans =

    30

>> 

版权声明:本文为qq_43657247原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。