OC-方法之desription/alloc/init(2)

来源:互联网 发布:陕西广电网络上班时间 编辑:程序博客网 时间:2024/06/05 09:17
#import <Foundation/Foundation.h>@interface Person : NSObject{    @protected    int _age;}- (void) setAge:(int)age;- (int) age;@end@implementation Person- (void) setAge:(int)age{    _age=age;}- (int) age{    return _age;}- (id) init{    if (self=[super init]) {        self->_age=20;    }    return self;}- (NSString *)description{    return [NSString stringWithFormat:@"_age %d",_age];}@end@interface Student : Person@end@implementation Student- (id) init{    if (self=[super init]) {        //use of undeclared identifier 'super'        //super->_age=30;        self->_age=30;    }    return self;}@endint main(){    //相当于[Person new]    Person *p=[[Student alloc] init];    NSLog(@"%@",p);    return 0;}


1对象实例化包括两个步骤

-分配内存 -初始化变量

Student *stu=[Student alloc];表示为一个内存分配存储空间,并返回该空间的指针

[stu init];调用-(id) init 方法初始化对象.对象初始化前必须调用超类的init方法.

当我们需要初始化对象属性的时候,可以提供一个带有参数的构造方法,例如

[stu initWithAge:.... andScore:...];


2.当我们查看一个对象,主要是观察其内部属性的值,这时候向对象发送一条description消息.

重新该方法,以获取对象属性,类比JAVA 的toString();


0 0