Objective-C 继承与类
创建: 2018/01/20
完成: 2018/01/21
更新: 2018/01/22 标题前增加 [Objective-C]
| 继承的概念 | |||||||||||||||||
| 父类与子类 |
●继承: 继承其他类 ●父类: 被继承的类 子类: 继承的类 ●子类: 可以增加方法与变量,改写已有父类方法 |
||||||||||||||||
|
继承关系 (Class hierarchy) |
不断继承,树结构一样 最顶端是根类 Cocoa环境下的根类是NSObject, 所有类都要继承它!(直接或间接) |
||||||||||||||||
| 使用继承的类定义 | |||||||||||||||||
| 继承关系的声明 |
|
||||||||||||||||
| 类声明与头文件 | 继承时,头文件必须包含被继承类的头文件 | ||||||||||||||||
| 继承与方法的呼出 |
当呼出函数(发送信息)时 ●先找当前类定义里有没有 ●再找父类里面有没有定义,没有就再往上找 |
||||||||||||||||
| 呼出重载前的父类的方法 |
[super 方法名]; |
||||||||||||||||
| 构造函数 |
|
||||||||||||||||
| 继承的例子 | |||||||||||||||||
| # TODO: Supply [补充例子, 46~49] | |||||||||||||||||
| 继承与呼出方法 | |||||||||||||||||
| self | 自己 | ||||||||||||||||
| super |
继承的父类(最靠近的一个) 用super来呼出方法是呼出父类的方法 |
||||||||||||||||
| # TODO: Supply [补充例子, 51~52] | |||||||||||||||||
| 定义方法时的注意 | |||||||||||||||||
| 内部方法 |
●不在@interface里声明,直接在@implementation里定义 ●外部看不懂相关信息,但是仍旧可以呼出该函数 ●被继承时候主要不要不小心重载了(建议在开头附上前缀) @interface Sample : NSObject {
|
||||||||||||||||
|
指定初始化函数 (Designated initializer) |
●可以单独(包含读取父类的指定初始化函数)完成初始化,不需要呼出本类内其他构造函数的函数 ●NSObject的指定初始化函数式init ●子类创设初始化函数时, 要呼出父类的指定构造函数(也就是主构造函数) |
||||||||||||||||
Objective-C 继承与类的更多相关文章
- 窥探Swift之类的继承与类的访问权限
上一篇博客<窥探Swift之别具一格的Struct和Class>的博客可谓是给Swift中的类开了个头.关于类的内容还有很多,今天就来搞一下类中的继承以及类的访问权限.说到类的继承,接触过 ...
- 继承Thread类
Thread类在包java.lang中,从这个类中实例化的对象代表线程,启动一个新线程需要建立Thread实例,Thread类中常用的两个构造方法如下: (1)public Thread(String ...
- C++中虚继承派生类构造函数的正确写法
最近工作中某个软件功能出现了退化,追查下来发现是一个类的成员变量没有被正确的初始化.这个问题与C++存在虚继承的情况下派生类构造函数的写法有关.在此说明一下错误发生的原因,希望对更多的人有帮助. 我们 ...
- C#中是否可以继承String类
C#中是否可以继承String类? 答:String类是sealed类故不可以继承. 当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承. 在下面的示例中,类 HoverTree ...
- Java中继承thread类与实现Runnable接口的区别
Java中线程的创建有两种方式: 1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2. 通过实现Runnable接口,实例化Thread类 在实际应用中, ...
- Java通过继承thread类与实现Runnable接口实现多线程的区别
Java中线程的创建有两种方式: 1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2. 通过实现Runnable接口,实例化Thread类 一.通过继承T ...
- Java中是否可以继承String类,为什么
Java中,是否可以继承String类?为什么? 答案: 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变. public final class ...
- [Effective JavaScript 笔记]第40条:避免继承标准类
ECMAScript标准库里配备了许多重要的类,如Array,function,以及Date等.扩展这些类生成子类可以方便完成很多工作,但它们的定义具有很多特殊的行为,所以很难写出行为正确的类. Ar ...
- 是否可以继承String类?
是否可以继承String类? String类是final类故不可以继承
- 接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)?
接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)? 1. 接口可以继承接口. 2. 抽像类可以实现(implements)接 ...
随机推荐
- Tomcat处理HTTP请求原理
一.Tomcat是什么? Tomcat是一个Web应用服务器,同时也是一个Servlet/JSP容器.Tomcat作为Servlet容器,负责处理客户端请求,把请求传送给Servlet,并将Servl ...
- HDU 2647 逆向拓扑排序
令每一个员工都有一个自己的等级level[i] , 员工等级越高,那么工资越高,为了使发的钱尽可能少,所以每一级只增加一单位的钱 输入a b表示a等级高于b,那么我们反向添加边,令b—>a那么i ...
- [luoguP1056] 排座椅(sort + 模拟)
传送门 nc题,一直sort就过了 代码 #include <cstdio> #include <iostream> #include <algorithm> #d ...
- 【Github】如何删除github上的项目
1.登录你的githup账户,进入到仓库页面如下图 2.点击setting进入到该仓库的设置界面 3.复制一下仓库的名称,然后下拉到最后,点击delete this repository 4.将刚刚复 ...
- cogs——644. 课程安排问题
644. 课程安排问题 ★ 输入文件:curriculum.in 输出文件:curriculum.out 简单对比时间限制:1 s 内存限制:128 MB 问题描述 一个软件专业的学生 ...
- poj——3728 The merchant
The merchant Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 5055 Accepted: 1740 Desc ...
- springboot整合mybatis连接mysql数据库出现SQLException异常
在springboot整合mybatis连接数据库的时候,项目中遇到一个SQLException,我检查了properties配置文件,看数据源有没有配错,检查有没有打错字,在数据库中把sql语句查询 ...
- MongoDB小结05 - update【$set & $unset】
用$set指定一个键的值,如果不存在,就创建它.这对更新模式或者增加用户定义很有帮助. db.user.insert({"name":"codingwhy.com&quo ...
- Vue中-下拉框可以选择可以填写
<el-form-item label="方法名称"> <el-autocomplete popper-class="my-autocomplete&q ...
- C#——await与async实现多线程异步编程
曾经,我们也许用过Thread.在主线程运行的时候.新开还有一个新线程,来运行新方法. 今天看别人发给我的一段代码的时候发现了一个不认识的await,可是又感觉非常熟悉的样子,感觉是线程那块儿的东西, ...