创建: 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

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

   
   
   
   
   
   
   
   

Objective-C 继承与类的更多相关文章

  1. 窥探Swift之类的继承与类的访问权限

    上一篇博客<窥探Swift之别具一格的Struct和Class>的博客可谓是给Swift中的类开了个头.关于类的内容还有很多,今天就来搞一下类中的继承以及类的访问权限.说到类的继承,接触过 ...

  2. 继承Thread类

    Thread类在包java.lang中,从这个类中实例化的对象代表线程,启动一个新线程需要建立Thread实例,Thread类中常用的两个构造方法如下: (1)public Thread(String ...

  3. C++中虚继承派生类构造函数的正确写法

    最近工作中某个软件功能出现了退化,追查下来发现是一个类的成员变量没有被正确的初始化.这个问题与C++存在虚继承的情况下派生类构造函数的写法有关.在此说明一下错误发生的原因,希望对更多的人有帮助. 我们 ...

  4. C#中是否可以继承String类

    C#中是否可以继承String类? 答:String类是sealed类故不可以继承. 当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承. 在下面的示例中,类 HoverTree ...

  5. Java中继承thread类与实现Runnable接口的区别

    Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类 在实际应用中, ...

  6. Java通过继承thread类与实现Runnable接口实现多线程的区别

    Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类 一.通过继承T ...

  7. Java中是否可以继承String类,为什么

    Java中,是否可以继承String类?为什么? 答案: 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变. public final class ...

  8. [Effective JavaScript 笔记]第40条:避免继承标准类

    ECMAScript标准库里配备了许多重要的类,如Array,function,以及Date等.扩展这些类生成子类可以方便完成很多工作,但它们的定义具有很多特殊的行为,所以很难写出行为正确的类. Ar ...

  9. 是否可以继承String类?

    是否可以继承String类? String类是final类故不可以继承

  10. 接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)?

    接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)? 1. 接口可以继承接口. 2. 抽像类可以实现(implements)接 ...

随机推荐

  1. noip模拟赛 收集果子

    分析:显然的,树形dp,状态也很好想到:f[i][j]表示以i为根的子树收集到j个果子的方案数.转移的话就相当于是背包问题,每个子节点可以选或不选.如果不选子节点k的话,那么以k为根的子树的边无论断不 ...

  2. BBS+Blog项目流程及补充知识点

    项目流程: 1. 产品需求 (1)基于用户认证组件和Ajax实现登陆验证(图片验证码) (2)基于forms组件和Ajax实现注册功能 (3)设计系统首页(文章列表渲染) (4)设计个人站点页面 (5 ...

  3. node框架express里面静态文件中间件express.static,根据路径名查找文件

    - 是express框架下的一个方法,可以根据请求路径名查找某个文件下文件名字和路径名相同的文件 - 3.X里面有20多个中间件,但是在4.X里面 只保留了express.static - 语法 ex ...

  4. 创建Django项目(七)——表单

    2013-08-15 19:43:01|         1.URL配置和视图 "blog\urls.py"文件中:添加url(r'write_article/$', 'write ...

  5. [bzoj2946][Poi2000]公共串_后缀数组_二分

    公共串 bzoj-2946 Poi-2000 题目大意:给定$n$个字符串,求他们的最长公共子串. 注释:$1\le n\le 5$,$1\le minlen<maxlen\le 2000$. ...

  6. Warm up-HUD4612(树的直径+Tarjin缩点)

    http://acm.hdu.edu.cn/showproblem.php?pid=4612 题目大意:求加一条边最小的桥数 先用Tarjin缩点求出一棵树,然后用bfs求出树的直径,树的直径就是加一 ...

  7. Spring Cloud(5):Hystrix的使用

    熔断:类似生活中的保险丝,电流过大就会熔断 降级:类似生活中的旅行,行李箱只有那么大,所以要抛弃一些非必需的物品 熔断降级应用: 某宝双十一商品下单,用户量巨大,于是考虑抛弃相关商品推荐等模块,确保该 ...

  8. 洛谷 P4470 [BJWC2018]售票

    P4470 [BJWC2018]售票 C 市火车站最近出现了一种新式自动售票机.买票时,乘客要先在售票机上输入终点名称.一共有N 处:目的地,随着乘客按顺序输入终点名称的每个字母,候选终点站数目会逐渐 ...

  9. Ubuntu 16.04出现Can't open /etc/rc.d/init.d/functions的问题解决

    /etc/rc.d/init.d/functions是CentOS的位置,Ubuntu对应:/lib/lsb/init-functions 参考: https://unix.stackexchange ...

  10. MongoDB C#驱动

    烟波钓徒 MongoDB C#驱动 http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial 笔记 首先下载驱动.驱动有两个文件 Mongo ...