Objective c类的初始化
来源:互联网 发布:量化交易程序员招聘 编辑:程序博客网 时间:2024/05/16 06:29
Objective c中实现类的初始化要先重载父类的init方法:
1.首先调用[super init]使用父类的方法进行初始化,将对象赋给self
2.如果self不为nil即父类初始化成功,接着进行本类的初始化
3.返回self给调用者
@implementation Test-(id)init{ if(self = [super init]) { //本类的初始化代码 //.......... } return self; }@end
————————————————————————————————————————————————————————————————————————————
虚方法
1.调用时不看指针看对象,称为虚方法
2.OC中所有的方法都是虚方法
3.父类的指针可以指向子类对象
有两个类card1.h@interface Card1 : NSObject{ int money;}@property (nonatomic,assign) int money;-(void)printAccount;card2.h@interface Card2 : Card1- (void)printAccount;@end在main.m中Card2 *card2=[[Card2 alloc] init];card2.money=1000;Card1 *card1=card2;[card1 printAccount];
//父类指针指向子类对象,实际上仍然时调用子类card2中的打印方法,因为card1指针指向card2对象
这一点与C++里面也是很类似的,OC中所有的对象都是通过指针来访问的。这些指针对象拥有编译时类型和运行时类型。
编译时类型是静态类型,在编译阶段编译器只是做简单地类型检查,宏替换,导入头文件等动作,与声明它时候的定义相关;运行时类型是动态类型,与它实际所指向的实例变量的类型有关,程序执行时才知道的类型。
编译器在编译阶段时会进行语法检查,因此虽然当父类指针指向子类的对象时,父类的.h声明文件中未声明的方法均不能直接调用,只能通过OC的反射机制来访问,如通过performSelector:@selector(SEL)来访问,但编译器此时还是会有警告的。此时调用执行的均为子类的方法。当且仅当这个方法在子类中没有实现时才会调用父类自己的方法。
0 0
- Objective c类的初始化
- Objective-C 类的初始化
- objective-c类初始化
- Objective-C的Initialize初始化方法研究
- Objective-C的Initialize初始化方法研究
- 谈谈Objective-C下对象的初始化
- Objective-C的Initialize初始化方法研究
- Objective-C的Initialize初始化方法研究
- 浅谈 Objective-C 下对象的初始化
- Objective-C的Initialize初始化方法研究
- Objective-C的Initialize初始化方法研究
- 浅谈 Objective-C 下对象的初始化
- Objective-C的Initialize初始化方法研究
- Objective-C的Initialize初始化方法研究
- 浅谈 Objective-C 下对象的初始化
- Objective-C的Initialize初始化方法
- Objective- c浅谈对象的初始化
- Objective-c下的对象初始化
- Android adb无法发现设备处理方法
- appframework基础 : 四、panel 属性
- 用前端性能优化解决方案弥补CDN的不足
- ListView的使用
- 关键字声明
- Objective c类的初始化
- Linux网络配置
- Mysql数据库的链接方式
- ANDROID中按键的添加配置(linux按键到android处理)
- HLJUOJ1011(小根堆)
- 8 SQL-on-Hadoop frameworks worth checking out
- Android hierarchyviewer不能使用的解决方法
- php学习资源资料分享-初学到掌握
- 编译器优化选项带来的影响逻辑的问题