OC语言:类方法以及构造器与访问器的用法

在OC中,我们新建一个类,得到两个文件:xx.h(方法声明文件)、xx.m(方法实现文件)。
方法又分为实例方法(+)和类方法(-),方法的格式如下:
-|+(返回值类型)方法名:参数列表
{
    方法体;
}

特点:
1.类方法可以调用类方法
self 代表当前对象的指针
[self sayHi];
2.类方法不可以调用实例方法,但是类方法可以通过创建实例对象来访问实例方法
Person *person = [Person new];
[person sayHello];
3.类方法不可以使用实例变量。类方法可以使用self,因为self不是实例变量
NSLog(@”My name is %@, I‘m %ld years old ,I like %@”,_name,_age,_hobby);
4.类方法作为消息,可以被发送到类里面去,不能发送到对象里面去
}

构造器与访问器,同理于JAVA中get()方法以及set()方法。
通过构造器和访问器来间接访问类中的变量属性,既可以隐藏变量起到保护的作用,也可以提供访问的方法,不至于在需要调用相应属性时,到时属性无法访问。
getter和setter的引入带来的好处:
1.在setter中可以加入合法性检查,例如在俄罗斯方块中,检测方块向左移动是否越出游戏界面,如果越出,则返回false,终止向左移动操作。
2.更新与被设置变量相关的其他变量的值,例如模拟攀登高山的情景,在人的相对海拔改变时,相应的气温,空气含量等参数也需要改变。
3.在debug时,可以在其中,尤其是在stter中加入追踪log。
4.在多线程环境中,如果要保护对象的并发访问,则必须在getter和setter中加入同步锁。

构造器和访问器的代码如下:
//getter构造器
#import <Foundation/Foundation.h>
@interface Student : NSObject
{
    NSString *_name;
    NSInteger _age;
    NSString *_hobby; 
}

//设置器 与 访问器
//对于_name属性的设置器
- (void) setName : (NSString *)name;

//_name访问器
- (NSString *)name;

//_age设置器
- (void) setAge  : (NSInteger)age;

//_age访问器
- (NSInteger)age;

//_hobby设置器
- (void) setHobby  : (NSString *)hobby;

//_hobby访问器
- (NSString *)hobby;
@end

//访问器setter
#import "Student.h"
@implementation Student
-(void)setName:(NSString *)name{
    _name=name;
}
-(NSString *)name{
    return _name;
}
//对age属性来做正确性校验
-(void)setAge:(NSInteger)age{
    if(age < 18){
        _age=18;
    }
    else{
        _age=age;
    }
}
-(NSInteger)age{
    return _age;   
}
//正确性校验
-(void)setHobby:(NSString *)hobby{
    _hobby=hobby;
    if([_hobby isEqualToString:@"PLAY LOL"]){
        _hobby = @"niuB";
    }
    else{
        _hobby = @"lowB";
    }
}
-(NSString *)hobby
    return _hobby; 
}
@end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值