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版权协议,转载请附上原文出处链接和本声明。