C16_OC06-id关键字和构造方法

来源:互联网 发布:不良信息过滤软件 编辑:程序博客网 时间:2024/05/14 06:17


1.id关键字

#import <Foundation/Foundation.h>@interface Persion : NSObject    @property NSString * name;    @property id obj;           //同@property NSObject * obj;这个属性必须是一个OC对象    - (void) show:(id)_obj;     //方法的参数为id类型,即任意的NSObject对象@end@implementation Persion    @synthesize name;    @synthesize obj;    - (void) show:(id)_obj{        NSLog(@"参数obj:%@", _obj);    }@endint main(int argc, const char * argv[]){    // NSObject * p = [Persion new];    id p = [Persion new];        //p.name = @"兰草";   //似乎因为NSobject没有name属性,这样不好使    [p setName:@"菊花"];  //这样却好使        //NSLog(@"植物:%@", p.name);    NSLog(@"植物:%@", [p name]);        [p setObj:@"这个是id属性"];                  //字符串是NSString对象    NSLog(@"id属性obj:%@", [p obj]);        [p setObj:[NSNumber numberWithInt:2234]];   //数字对象类型    NSLog(@"id属性obj:%@", [p obj]);        [p show:[NSString stringWithFormat:@"这是id参数"]];        return 0;}


2.构造方法

#import <Foundation/Foundation.h>@interface Persion : NSObject    {        NSString * _name;    }    @property NSString * name;    //OC对象的构造方法是init,自定义构造方法命名以initWithXxx格式    - (id) initWithName:(NSString *)name;@end@interface Student : Persion    /**    继承了一个_name、一个setName/getName、一个initWithName、init    **/@end@implementation Persion    @synthesize name = _name;    /** 重写构造方法     原则:先初始化父类 **/    - (id)init{        if (self = [super init]){   //认定这是构造方法内OC的固定写法            //这里执行业务            _name = @"Heeee";        }        return self;    //初始化结束,返回自身对象实例    }    /** 自定义构造方法 **/    - (id) initWithName:(NSString *)name{        if (self = [super init]) {            _name = name;        }        return self;    }@end@implementation Student    /**     继承了父类的动态方法     **/@endint main(int argc, const char * argv[]){    // NSObject * p = [Persion new];    Persion * p = [Persion new];    p.name = @"Alizee";    NSLog(@"P的Name:%@", p.name);        Persion * per1 = [Persion alloc];   //分配内存空间    Persion * per2 = [per1 init];       //执行构造方法,初始化    per2.name = @"Eminem";    NSLog(@"Per的Name:%@", per2.name);        Persion * persi = [[Persion alloc] init];    [persi setName:@"Tupac"];    NSLog(@"Persi的Name:%@", persi.name);        Persion * persion = [[Persion alloc] initWithName:@"Michael"];    NSLog(@"Persion的Name:%@", persion.name);        Student * s = [[Student alloc] init];    s.name = @"Student";    NSLog(@"S的Name:%@", s.name);        Student * student = [[Student alloc] initWithName:@"Manson"];    NSLog(@"Student的Name:%@", student.name);        return 0;}

- end

0 0
原创粉丝点击