OC属性、构造函数
属性:是某种事物的特征
setter:设置者
- (void)setName:(NSString *)setName;
getter:获取者
- (NSString *)name;
setter:公式
- (void)set属性名:(属性类型)形参名;
getter:公式
- (属性类型)属性名;
点语法(.)又叫做属性
可以通过.给属性赋值取值
属性的公式:
在.h文件中 @property属性的类型属性名;表示声明属性方法
在.m文件中写 @synthesize (现在不用写)表示实现属性方法
现在@property既包含声明也包含实现
属性其他的关键字:
1、readonly:只读 只允许访问不允许修改(只允许使用getter方法)
2、readwrite:读写
3、gtter = isSuccess表示在赋值的时候这个属性叫做success在取值的时候叫做isSuccess
retain:只要是使用属性除了基本数据类型 都可以使用retain
copy:字符串、数组、字典为属性的时候可以使用copy
copy ->是为了防止赋值的数组被释放置空,影响属性的数组,所以使用copy形成一个新的数组
assign:是直接赋值只要是基本数据都是用assign
设置属性的访问权限
1、readonly:只读 只开放读取的权限(保护对象里面的数据不被修改)
2、readwrite:读写 开放全部的属性权限
构造方法:->init
自定义构造方法:
1、公式:
- (id)initWith要初始的名字:(数据类型)形参名
{
self = [super init];
if(self){
}
return self;
}
2、本质:就是一个有参数有返回值的方法但是自定义构造函数有特殊意义表示是一个创建对象的方法
标识它有特殊意义的符号:
(1)方法名:开头必须用initWith并且W大写
(2)方法实现的公式自定义构造函数必须实现下面功能
self = [super init];
if(self){
}
return self;
注意:1、initWith W必须大写
2、不要忘记在.h文件中去声明
为什么要使用属性?->只要是正向传值随时都可以使用
为什么要使用自定义构造方法 ->正向传值只能在初始化对象的时候使用
目的都是为了传值
******变量名不能重名,方法名也不能重名
封装、继承、多态
封装、继承、多态->面向对象语言的三大特征
1、封装:把所有共性的东西放到一起
好处:(1)代码清晰(2)模块化方便使用减少代码量(3)复用性高便于维护
2、继承:
子类、父类(超级类)
子类和父类的关系:
(1)父类有的方法子类可以使用
(2)父类有的属性子类可以使用
(3)父类所有公开的方法属性子类都可以使用
子类独有的方法属性父类不能使用
OC里面没有多继承只能单继承多级继承可以使用类目(category)来弥补没有多继承的缺点
多态:同一个方法有不同的实现