首页 > 代码库 > Objective c类的初始化
Objective c类的初始化
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)来訪问,但编译器此时还是会有警告的。此时调用运行的均为子类的方法。当且仅当这种方法在子类中没有实现时才会调用父类自己的方法。
Objective c类的初始化
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。