oc语法04
2015-08-18 22:22
204 查看
• set方法和get方法
• set方法和get方法的使用场合
@public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检、水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数
• set方法
• 作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值
• 命名规范:
• 方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写
• 形参名称不要跟成员变量同名
• get方法
• 作用:返回对象内部的成员变量
• 命名规范:get方法的名称一般就跟成员变量同名
• 成员变量的命名规范
• 成员变量都以下划线 _
开头
• 可以跟get方法的名称区分开
• 可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量
• 代码示例
#import <Foundation/Foundation.h>
// 声明
@interface Car: NSObject
{
int _wheels;
//轮子个数
}
/*set方法*/
- (void) setWheels:(int)wheels;
/*get方法*/
- (int) wheels;
@end
@implementation Car
// set方法的实现
- (void) setWheels:(int)wheels
{
// 对外面传进来的轮子数进行过滤
if (wheels<=0)
{
wheels = 1;
}
_wheels = wheels;
}
// get方法的实现
- (int) wheels
{
return _wheels;
}
@end
• 封装的好处
• 过滤不合理的值
• 屏蔽内部的赋值过程
• 让外界不必关注内部的细节
• 练习
• Dog类,属性:weight、speed,方法:吃、跑
• Person类,属性:dog、age,方法:喂狗、遛狗
• 类方法
• 基本概念
直接可以用类名来执行的方法(类本身会在内存中占据存储空间,里面有类\对象方法列表)
• 类方法和对象方法对比
• 对象方法
• 以减号-开头
• 只能让对象调用,没有对象,这个方法根本不可能被执行
• 对象方法能访问实例变量(成员变量)
• 类方法
• 以加号+开头
• 只能用类名调用,对象不能调用
• 类方法中不能访问实例变量(成员变量)
• 使用场合:当不需要访问成员变量的时候,尽量用类方法
• 类方法和对象方法可以同名
• 示例
• 设计一个方法输出类名
• 计算器类
• self关键字
• 谁调用当前方法,self就代表谁,出现在对象方法中,就代表当前这个对象,出现在类方法就代表当前类,在对象方法中用self ->成员变量名,代表访问当前对象的成员变量,但是在当前类中
• self->成员变量,是错误的,因为成员变量属于对象,不属于类,类没有成员变量,只要对象有
• self是一个指针,他是指向当前正在调用这个方法的对象
• 谁(对象)调用self,self就指向谁(对象)
• 成员变量和局部变量同名
• 当成员变量和局部变量同名时,采取就近原则,访问的是局部变量
• 用self访问成员变量,区分同名的局部变量
• 例子: Person *p = [Person new];
• [p test1]; //调用test1对象方法
• [Person test2]; //调用test2类方法
-(void)test
{
[self test];
}
+(void)test
{
[self test];
}
//上面两个都会引发死循环
分析:- (void)test 是对象方法,只能由 p对象来调用,+(void)test 是类方法,只能由Person类来调用,
-(void)test中的self指向的是对象P,因为对象方法,只能由对象P来调用-
(void)test ,对于self而言 就是,谁 正在调用了这个方法(-(void)test
),self 就指向谁,p正在调用- (void)test 这个方法, 则self指向p这个对象,类方法同上,因为当前调用self 所在的方法(+(void)test)的是Person这个 类,所以,+
(void)test 里面的self就是 指向当
9fa7
前类Person
• 使用细节
• 出现的地方:所有的OC方法中(对象方法\类方法),不能出现在函数
• 作用
•
使用"self->成员变量名"
访问当前方法调用(正在调用这个方法的对象)的成员变量
• 使用 "[self
方法名];"
来调用方法(对象方法\类方法)调用当前对象的方法
• 常见错误
• 低级错误:用self去调用函数
• 类方法中用self调用对象方法,对象方法中用self调用类方法
• self死循环
• 示例
• 狗在跑之前叫两声
• 计算器类,计算平均值的调用求和方法
• 习题
• 设计Car类,一个对象方法跟其他车子比较车速,返回速度差,一个类方法比较两辆车的车速,返回速度差
• set方法和get方法的使用场合
@public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检、水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数
• set方法
• 作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值
• 命名规范:
• 方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写
• 形参名称不要跟成员变量同名
• get方法
• 作用:返回对象内部的成员变量
• 命名规范:get方法的名称一般就跟成员变量同名
• 成员变量的命名规范
• 成员变量都以下划线 _
开头
• 可以跟get方法的名称区分开
• 可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量
• 代码示例
#import <Foundation/Foundation.h>
// 声明
@interface Car: NSObject
{
int _wheels;
//轮子个数
}
/*set方法*/
- (void) setWheels:(int)wheels;
/*get方法*/
- (int) wheels;
@end
@implementation Car
// set方法的实现
- (void) setWheels:(int)wheels
{
// 对外面传进来的轮子数进行过滤
if (wheels<=0)
{
wheels = 1;
}
_wheels = wheels;
}
// get方法的实现
- (int) wheels
{
return _wheels;
}
@end
• 封装的好处
• 过滤不合理的值
• 屏蔽内部的赋值过程
• 让外界不必关注内部的细节
• 练习
• Dog类,属性:weight、speed,方法:吃、跑
• Person类,属性:dog、age,方法:喂狗、遛狗
• 类方法
• 基本概念
直接可以用类名来执行的方法(类本身会在内存中占据存储空间,里面有类\对象方法列表)
• 类方法和对象方法对比
• 对象方法
• 以减号-开头
• 只能让对象调用,没有对象,这个方法根本不可能被执行
• 对象方法能访问实例变量(成员变量)
• 类方法
• 以加号+开头
• 只能用类名调用,对象不能调用
• 类方法中不能访问实例变量(成员变量)
• 使用场合:当不需要访问成员变量的时候,尽量用类方法
• 类方法和对象方法可以同名
• 示例
• 设计一个方法输出类名
• 计算器类
• self关键字
• 谁调用当前方法,self就代表谁,出现在对象方法中,就代表当前这个对象,出现在类方法就代表当前类,在对象方法中用self ->成员变量名,代表访问当前对象的成员变量,但是在当前类中
• self->成员变量,是错误的,因为成员变量属于对象,不属于类,类没有成员变量,只要对象有
• self是一个指针,他是指向当前正在调用这个方法的对象
• 谁(对象)调用self,self就指向谁(对象)
• 成员变量和局部变量同名
• 当成员变量和局部变量同名时,采取就近原则,访问的是局部变量
• 用self访问成员变量,区分同名的局部变量
• 例子: Person *p = [Person new];
• [p test1]; //调用test1对象方法
• [Person test2]; //调用test2类方法
-(void)test
{
[self test];
}
+(void)test
{
[self test];
}
//上面两个都会引发死循环
分析:- (void)test 是对象方法,只能由 p对象来调用,+(void)test 是类方法,只能由Person类来调用,
-(void)test中的self指向的是对象P,因为对象方法,只能由对象P来调用-
(void)test ,对于self而言 就是,谁 正在调用了这个方法(-(void)test
),self 就指向谁,p正在调用- (void)test 这个方法, 则self指向p这个对象,类方法同上,因为当前调用self 所在的方法(+(void)test)的是Person这个 类,所以,+
(void)test 里面的self就是 指向当
9fa7
前类Person
• 使用细节
• 出现的地方:所有的OC方法中(对象方法\类方法),不能出现在函数
• 作用
•
使用"self->成员变量名"
访问当前方法调用(正在调用这个方法的对象)的成员变量
• 使用 "[self
方法名];"
来调用方法(对象方法\类方法)调用当前对象的方法
• 常见错误
• 低级错误:用self去调用函数
• 类方法中用self调用对象方法,对象方法中用self调用类方法
• self死循环
• 示例
• 狗在跑之前叫两声
• 计算器类,计算平均值的调用求和方法
• 习题
• 设计Car类,一个对象方法跟其他车子比较车速,返回速度差,一个类方法比较两辆车的车速,返回速度差
相关文章推荐
- Windows编程零基础入门:1.1 Windows是什么?
- ERROR 1064 (HY000): ChildTable multi insert not provided
- BMC IPMI常用命令
- Task Schedule(Hdu3572网络流)
- Java 实现m个数全排列组合以及从M中选取N个数(有序)
- try-catch和throw,throws的区别和联系
- OC语法02
- Android输入框中加入清除按钮
- Android 相对布局
- GUID介绍
- 简单解析三种JAVA调用方式-同步,异步,回调
- 找数
- 最小生成树克鲁斯卡尔算法c语言实现__Kruskal
- python科学计算_numpy_线性代数/掩码数组/内存映射数组
- Map集合知识点
- C++学习 图形接口及window窗口
- C++ Primer : 第十章 : 泛型算法 之 lambda表达式和bind函数
- 如何在 datables中加入可输入的分页样式
- 【LeetCode】125_Valid Palindrome
- 135. Candy