创建: 2018/01/20

完成: 2018/01/21

更新: 2018/01/22 标题前增加 [Objective-C]

 继承的概念
 父类与子类

●继承: 继承其他类

●父类: 被继承的类 子类: 继承的类

●子类: 可以增加方法与变量,改写已有父类方法

继承关系

(Class hierarchy)

不断继承,树结构一样

最顶端是根类

 Cocoa环境下的根类是NSObject, 所有类都要继承它!(直接或间接)

   
   
   
   
   
   
   
   
 使用继承的类定义
 继承关系的声明
位置

头文件 {接口所在处(@interface)}

@interface 类名 : 父类 {
实例参数的声明
...
}
方法的声明;
...
@end

有要继承的就把那个写上

没有要继承的就写根类NSObject

变量声明

不需要加的可以只写{} 或者省略

方法声明

重载的也尽量声明一下并加上注释说明是重载

   
 类声明与头文件   继承时,头文件必须包含被继承类的头文件
 继承与方法的呼出 

当呼出函数(发送信息)时

●先找当前类定义里有没有

●再找父类里面有没有定义,没有就再往上找

 呼出重载前的父类的方法

[super 方法名];
 构造函数
 alloc的作用
   为类的实例申请内存
   把所有值设为0
   
 原则

●先把父类的init呼出

●判断父类init是否成功

 例

- (id)init {
self = [super init];
if (self != nil) {
...
}
return self;
}

   
   
   
   
   
   
 继承的例子
   # TODO: Supply [补充例子, 46~49]
   
 继承与呼出方法
 self   自己
 super

继承的父类(最靠近的一个)

用super来呼出方法是呼出父类的方法

   # TODO: Supply [补充例子, 51~52]
   
   
   
   
   
   
   
 定义方法时的注意 
 内部方法

●不在@interface里声明,直接在@implementation里定义

●外部看不懂相关信息,但是仍旧可以呼出该函数

●被继承时候主要不要不小心重载了(建议在开头附上前缀)

@interface Sample : NSObject {
int a;
}
- (int)test: num;
@end @implementation Sample
- (int)test: num {
...
}
- (int)test_2: num {
...
}
@end

指定初始化函数

(Designated initializer)

●可以单独(包含读取父类的指定初始化函数)完成初始化,不需要呼出本类内其他构造函数的函数

●NSObject的指定初始化函数式init

●子类创设初始化函数时, 要呼出父类的指定构造函数(也就是主构造函数)

   
   
   
   
   
   
   
   

最新文章

  1. 记录一下emacs在window下的配置过程
  2. 关于L'Hopital法则
  3. AngularJs 时间格式化处理
  4. PAT A 1013. Battle Over Cities (25)【并查集】
  5. topcoder SRM 622 DIV2 BoxesDiv2
  6. 2014 网选 5024 Wang Xifeng's Little Plot
  7. iOS 进阶 第十七天(0420)
  8. ACE 1.1.9 发布,开源云端代码编辑器
  9. 面试问到struts1与struts2的解析对比
  10. 020自动化测试 PK 手动测试
  11. HDU 5492(DP) Find a path
  12. 如何使用Reaver破解Wi-Fi网络的WPA密码
  13. html+css基础篇
  14. (转)Windows下tail命令工具(转)
  15. 8000个JQuery特效(插件)
  16. luogu P1744 采购特价商品
  17. DWM1000 收发RXLED TXLED控制代码修改
  18. 【Jquery+Express.js】 submit() 方法提交form
  19. 【Java】 剑指offer(8) 用两个栈实现队列
  20. warning: LF will be replaced by CRLF in 解决办法

热门文章

  1. Eclipse调试相关
  2. 整体二分初识--POJ2104:K-th Number
  3. html5视频播放器 一 (改写默认样式)
  4. MyBatis实体属性与表的字段不对应的解决方案
  5. [React] Make Compound React Components Flexible
  6. Solid Edge性质管理者 如何获取装配体的BOM表 物料清单
  7. FaceBook开源库Fresco
  8. SDUTOJ 2476Period
  9. jqury-validate表单验证
  10. Gif验证码类