封装&对象的关系
1,类方法
就是在.h文件中声明以但是与之前的格式有所不同
格式:
+(返回值类型)方法名:( 参数类型) 参数 and参数2:(参数类型)参数2;
2.对象方与类方法不同的
就是对象方法以减号开头
在main函数中调用时也不一样
3.在main函数中使用类方法的流程
首先要先创建对象
[类名 类的方法名 :给参数赋值 ];
4.注意
1,类方法不可以使用实例变量,如果要用必须通过参数传过来。
2,类方法可以调用当前类其他类的方法
[类名 类的方法名];
3,对象方法可以使用实例变量,类方法不可以使用
2,匿名对象
1,可以放访问实际变量,匿名对象访问实例变量只能使用一次
格式:[类名 new] ->_实例变量=赋值 ;
或者
[[类名 alloc] init];
new =alloc init
alloc 申请空间
init 初始化
调用方法
[[ 类名 new] 方法名];
2,匿名作为方法参数的连续传递
比如人要开车回家
人要调用车才能回家
可读性差
[[Person new] goHome:[Car new]];
3封装
原理 给实际变量供一个能修改其方法和获取值的方法
利用 set和get 分别在.H和.m文件中进行封装
1,set的命名规范
1)set方法一定是一个对象方法(以 -开头)
2)set方法一定没有返回值(void)
3) set方法的方法名一定是以set开头,后面跟去掉下划线的实例变量名,而且首字母要大写
4)set方法一定有参数,参数类型和实例变量的类型要一致
5)set方法的形参的名称,一般建议是去掉下划线的实例变量名
6)set方法的实现中一定要给实例变量赋值
2)get方法(获取实例变量的值)
命名规范:
1)get方法一定是一个对象方法
2)get方法一定有返回值,返回值类型必须和实例变量的类型一致
3)get方法的方法名,一定是去掉下划线的实例变量名
4)get方法的实现中,一定要返回实例变量值
*/
2,俩者必须同时出现
比如在。h函数中声明
//set方法
-(void)setName:(NSString *)name;
//get方法
-(NSString *)name;
在。m文件中实现
也就是直接把声明方法调过来然后把分号去掉加上大括号
在{
在起内部一定要给实例变量赋值
也可以在内部进行过滤 将一些不合实际的过滤调
}
-(void)setName:(NSString *)name{
_name=name;
记住它没有返回值
}
-(NSString *)name{
在get方法中一定要有返回值
return _name;
}
3,在main函数中怎样调用?
首先还是要创建对象
然后给实例变量赋值
[指针 set实例变量:赋值];
4,依赖关系,人需要手机打电话
、格式
人 打电话 手机
4,static关键字的使用
static不能在声明中修饰实例变量
但是可以修饰局部变量和全局变量
不能修饰方法
这写修饰全局和局部都是在。m文件中使用