------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
封装的作用:
1> 过滤内部不合理的值
2> 屏蔽内部的赋值过程
3> 隐藏内部的一些细节
1. set 方法
1> 作用:提供一个方法给外界设置成员变量值,可在方法里面对参数进行过滤
2> 命名规范 :* 必须以set 开头。
* set后面跟上成员变量的名称,成员的首字母必须大写。
* 返回值一定是void。
* 一定要接受一个参数,参数类型跟成员变量类型要一致。
* 形参的名称不能跟成员变量名一样。
get 方法
1> 作用:返回内部的成员变量
2> 命名规范: * 肯定有返回值,返回值的类型肯定与成员变量类型一致
* 方法名跟成员变量名一样
* 不需要接受任何参数
代码示例:
#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
2.类的方法
概念:直接可以用类名来执行的方法,类自身会存储于内存中,里面有类\对象方法列表。
类方法和对象方法的比较
对象方法 : 类方法:
以减号 “ - ” 开头 以加号 “ + ” 开头
只能让对象调用,没有对象,这个方法则不能被执行 只能让类名调用,对象不能调用
对象方法能访问实例变量(成员变量) 类方法中不能访问实例变量(成员变量)
使用场合: 当不需要访问成员变量的时候,尽量用类方法
注意 :类方法可以和对象方法重名
3. self关键字
1> 使用场合: 适合于OC中所有的方法(对象方法\类方法),不能出现于函数中。
2> 作用:可使用 “ self—>成员变量名 ” 使用当前方法调用的成员变量。
使用“ [ self 方法名 ] ” 来调用方法(对象方法\类方法)。
3> 当成员变量和局部变量重名时,采取就近原则,访问的是当前的局部变量。
访问成员变量时, 注意区分同名的局部变量。
程序示例:
#import <Foundation/Foundation.h>
@interface Dog : NSObject
- ( void ) run ; // 定义对象方法:跑
- ( void )bark ; // 定义对象方法 :叫
@end
@implementation Dog
- ( void ) bark
{
NSLog( @ " 狗叫起来了 " ) ;
}
- ( void ) run
{
[ self bark ] ; // self这时会访问当前对象的方法
NSLog (@ " 狗跑远了 " ) ;
}
@end
int main( )
{
Dog *p = [ Dog new ] ;
[ p run] ; // 执行到这一步指针先访问对象的run方法,再在run里面访问bark 输出为:狗叫起来了
狗跑远了
return 0 ;
}