黑马程序员技术交流社区

标题: OC总结2 [打印本页]

作者: luguo    时间: 2015-6-11 11:07
标题: OC总结2
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方法,所以一般不会同时重写这两个方法。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2