OC继承详解与使用规则

本文详细介绍了Objective-C中的继承概念,包括类的继承关系、使用场景、好处、父类与子类的关系、继承的限制以及super关键字的使用。同时强调了继承可能导致的耦合性问题,并提供了初始化方法和内存管理的注意事项。
摘要由CSDN通过智能技术生成

1、OC中如果类A继承类B,B就成为A的父类。那么B的成员全部属于A的成员。相当于A全部拥有了B的所有成员(所有变量与所有方法)。即子类拥有父类中所有的成员变量和方法。

2、继承的使用场合:

(1)如果有两个或者两个以上的类含有很多相同的成分(成员变量/方法相同)。那么就可以把它们相同的部分提取到一个单独的类中,让这些相似的类继承于它。继承的实质就是把多个类中相同的代码抽出来放到一个单独的类中,然后让这些多个类继承于它。

(2)当A类拥有B类中的部分属性和方法时,可以考虑让B类继承A类。

(3)当B是A的一种时,用继承,即B继承A。当B拥有A,A是B的一个组成部分时。继承是一种,即种类的关系;而组合是一部分,即拥有的关系。即当XXX是XX时用继承,当XXX拥有XX时用组合。

3、继承的好处:抽取重复的代码。建立了类之间的关系。

4、父类中必须继承自NSObject类,如果不继承这个类  任何类都没有创建对象的能力。当父类继承了NSObject,子类直接继承父类即可,相当于间接的继承了NSObject。(基本上所有的类都继承自NSObject根类,还有一根类NSProxy但基本上用不着)。

5、在OC类的继承中,直接继承NSObject的基类内部会有被加载进来的NSObject类指针(Superclass地址),即这个基类Superclass指针的值指向被加载进来的NSObject类所在内存的首地址。然后直接继承自这个基类的子类中会有它直接继承的父类的地址即Superclass,也就是这个基类的地址。也就是说每一个类都有一个Superclass指针指向它直接继承的父类(NSObject类或别的类),而每一个对象内部都有一个isa指针(指向直接创建这个对象的类),即由哪个类创建的这个对象那么这个对象内部的isa的值就是哪个类所占内存的首地址。(切记:如果这个类是根类例如NSObject,那么这个类的Superclass的值为NULL)。

  注意:在首次用类创建对象时,切记是首次。即第一次用:[类名  alloc/new]来创建对象时会把这个类加载进内存。每个类只加载一次。即同一个类所创建的每个对象内部的isa指针都是相同的,都指向这个类。

6、在OC中,所谓的继承程单链继承,即单一继承。

7、id可以代替所有对象指针,id就是泛型。id在使用时也利用了动态绑定的原理。id在编译时是无法确定的,在将对象指针赋给id类型的变量后,利用id类型的变量调用方法时,id类型的变量会根据对象保存的isa指针(创建此对象的类的地址)来找到相应的方法列表进行调用。

8、OC中不允许子类和父类拥有相同名称的成员变量。但是方法可以相同(即重写:子类重新实现父类中的某个方法)。重写的好处是:覆盖父类以前的所有行为;

9、向上查找规

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值