A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© luguo 中级黑马   /  2015-6-11 11:07  /  729 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

13)没有继承就没有多态。多态就是用父类的指针指向子类的对象。如果子类重写了父类的方法后,就涉及到动态绑定为题,如果子类有重写,那么尽管用父类指针指向子类对象,程序在运行时会判断对象的真实类型(也就是用父类声明的那个对象指针),所以会调用子类的方法。除非子类没有重写该方法,只能调用父类的方法。

(14)接13,利用多态声明后,如果父类没有该方法子类有,会报错。这不是OC语言不支持,而是Xcode不支持。如果我们要继续使用,则需要强制转换,把父类声明的这个对象转换成子类声明的对象,然后再调用方法。

(15)点语法是OC为了迎合JAVA类程序员创造出来的。

(16)在子类中可以访问父类的@protected和@public成员变量,但不能访问@private成员变量。

(17)类的本质是一个类。在创建对象时,其实程序先把代码加载到代码区,然后再堆中创建了类对象,类对象的SEL指向了代码区中的方法,然后再利用类对象创建一个对象,这个对象的isa指向类对象,并在栈中存放了这个对象指针,指向这个对象。

(18)Class xxx=[类名 class];这个方法是获取类的类对象,xxx就是类对象。

(19)Person *p1=[Person new];这里p1以及self都是对象指针,它们指向的地址就是isa的地址。

(20)通过@property和@synthesize可以自动生成getter和setter方法,但是如果想控制输入数据的合理性,即setter赋值的合理性,可以重写setter方法。而且当自己同时手动设置setter和getter方法时,就不会为你自动生成成员变量。但一般我们都不会手动修改getter方法,所以一般不会同时重写这两个方法。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马