OC学习笔记04--id关键字与构造方法
来源:互联网 发布:qt5编程入门 pdf下载 编辑:程序博客网 时间:2024/05/16 14:27
typedef enum{ColorBlack='b',ColorYellow='y',ColorWhite='w'} Color;#import<Foundation/Foundation.h>@interface Pet : NSObject{@private int _age;double _weight;NSString * _name;}- (id)initWithAge:(int)age andWeight:(double)weight andName:(NSString *)name;-(id)initTest;- (NSString *)toString;@end@implementation Pet// 重写init方法,由于是无参构造方法,无法动态给成员变量赋值- (id)init {if(self=[super init]) //构造方法中必须调用父类构造方法{_age=1,_weight=1.0,_name=@"pet";}return self;}//自定义构造方法,可以自定义参数,灵活的给成员变量赋值- (id)initWithAge:(int)age andWeight:(double)weight andName:(NSString *)name{if(self=[super init]){_age=age,_weight=weight,_name=name;}return self;}-(id)initTest{if(self=[super init]){//从结果可知,[super class],[self class]都是指向调用者的类对象// 即若由Dog的实例调用,则都指向Dog的类对象,即[Dog class];NSLog(@"super=%d,self=%d,superclass=%d,selfclass=%d,Pet=%d",super,self,[super class],[self class],[Pet class]);}return self;}- (NSString *)toString{return [NSString stringWithFormat:@"name=%@ ,weight=%.2f ,age=%d",_name,_weight,_age]; }@end@interface Dog : Pet{@privateColor _furColor;}- (id)initWithAge:(int)age andWeight:(double)weight andName:(NSString *)name andFurColor:(Color)furColor;@end@implementation Dog- (id)init {if(self=[super init]) {_furColor=ColorYellow;}return self;}- (id)initWithAge:(int)age andWeight:(double)weight andName:(NSString *)name andFurColor:(Color)furColor{//调用父类的有参构造方法给父类成员赋值if(self=[super initWithAge:age andWeight:weight andName:name]){_furColor=furColor;}return self;}-(id)initTest{if(self=[super initTest]){NSLog(@"Dog=%d",[Dog class]);}return self;}- (NSString *)toString{return [NSString stringWithFormat:@"%@ ,furColor=%c",[super toString],_furColor]; }@endint main(){//id作为万能指针,能指向任意OC对象id *p=[[Dog alloc] init];NSLog(@"this dog is %@",[p toString]);id *p2=[[Dog alloc] initWithAge:4 andWeight:12.2 andName:@"Daisy" andFurColor:ColorWhite];NSLog(@"this dog is %@",[p2 toString]);id *p3=[[Dog alloc] initTest];NSLog(@"p3=%d",p3);return 0;}/*id关键字:typedef struct objc_object { Class isa;} *id;//构造对象相关方法伪代码+ (id)new {return [[self alloc] init];}+ (id)alloc{id obj=(struct objc_object)malloc(父类到子类所有成员变量所占字节数总和);return obj;}- (id)init{//[self class]返回类指针指向当前对象的类对象isa=[self class];return self;}//重写init方法必须调用[super init]来初始化父类中的成员变量 ---类似java无参constructor- (id)init{if(self=[super init]){..初始化操作..}return self;}//自定义构造方法(一般以init开头) ---类似java有参构造器- (id)initWithName:(NSString *)name{if(self=[super init]){_name=name;}return self;}*/
0 0
- OC学习笔记04--id关键字与构造方法
- oc中的id关键字和构造方法
- 黑马视频学习笔记-OC-id、构造方法
- 黑马程序员 OC------- id类型: 构造方法学习
- OC学习笔记之init构造方法
- OC学习笔记之OC类自定义构造方法
- 黑马程序员——OC语言学习——关键字id、构造方法、Category-分类、类的本质、 description方法、 SEL方法
- OC--Id和构造方法
- OC语言学习02-构造方法与类方法
- OC关键字@property、@synthesize和id类型、构造方法、分类categary、类的本质、description方法、SEL消息机制
- oc笔记<5>构造方法
- 学习笔记11-OC基本语法和构造方法
- C16_OC06-id关键字和构造方法
- OC学习笔记,构造函数
- oc构造方法与分类
- 第九篇:OC中的万能指针id 及 构造方法的实现与应用
- 20150902 Java学习笔记-构造方法,关键字,封装性
- 【Java学习笔记】数组,封装,构造与关键字
- jQuery的简介及语法
- 解决启动模拟器每次要求输入系统密码
- 状态机思路在程序设计中的应用
- android dp 和 px 的相互转换
- 在手机上点击确认以登录
- OC学习笔记04--id关键字与构造方法
- Android开发相关的Blog推荐——跟随大神的脚步才能成长为大神
- 树形dp入门 hdu 1520 and 2196
- 杭电HDU 1042大数阶乘N!
- 服务器负载均衡算法
- 如何批处理开机后的一些行为,如打开文件夹,文件以及远程连接
- error while loading shared libraries: libgtk-x11-2.0.so.0: wrong ELF class: ELFCLASS64
- 工程师创业的要点
- cocoaspod三方库管理教程