iOS开发-继承特征详解
面向对象的三大特性:封装,继承,多态。
1、继承
继承既能保证类的完整,又能简化代码。
把公共的方法和实例变量写在子类,子类只需要写父类独有的实例变量和方法即可。
继承是面向对象三大特性之一,合理的继承,能减少很多冗余代码,加快开发速度。
1. 继承的特点:
继承的上层:父类,继承的下层:子类。
继承的内容:所有实例变量和方法。
继承是单向的,不能相互继承。
继承具有传递性:A继承与B,B继承与C,A具有B和C的特征和行为。
如果子类不满意父类方法的实现,子类可以重写(overwrite)父类的方法。
2. super
super是编译器指令,并?对象。
作?:给super发消息,可以执??类该?法的实现 。
重写从?类继承过来的?法的三种情况:
• 完全以?类的实现内容为主,丢弃?类实现的内容。
• 完全以?类的实现内容为主,没有?类实现的内容。
• 既有?类对该?法的实现,也有?类对该?法的实现。
3.消息发送机制

2、初始化方法
1.初始化方法
初始化?法的主要作?是:为某些实例变量赋初值。
初始化?法在对象的整个?命周期?只使??次。
注:初始化?法是在对象的初始化阶段完成其实例变量的赋值操作,?个对象的初始化阶段只有?次,所以初始化?法只使??次。
1 - (id)init {
2 //给super发送init消息:执??类中实现的init?法
3 self = [super init];
4 //判断从?类继承过来的init?法是否初始化成功
5 if (self) {
6 //初始化设置
7 }
8 //返回初始化完成的对象
9 return self;
10 }
?类定义了除?类中公共实例变量之外的实例变量。
在??的初始化?法中,优先向super发送init消息,初始化公共变量, 初始化成功之后,再初始化??特有变量,从?完成全部实例变量的初始化。
2.self
self是系统关键字。 self在?法中指代当前?法的调?者。
self在实例?法中,指代调?当前?法的对象。
- (void)objectMethod {
}
self在类?法中,指代当前类。
+ (void)classMethod {
}
3. 初始化方法特征
• 初始化?法是 "_"?法。
• id 或者 instancetype 类型的返回值。
• 以init开头。
• 可以带 0 到多个参数。
内部实现:先执?super的初始化?法,再初始化??变量,后return self
4. 初始化过程
- ??的初始化?法中,优先调??类的初始化?法。
- ?类的初始化?法中再调??类的初始化?法,依次往上调?。
- 处于最上层的初始化完成之后,回到第?层的初始化?法中, 完成第?层的初始化。
- 第?层的初始化完成之后,回到第三层的初始化?法中,依次执?初始化?法,直到本类的初始化?法完成。
5. 指定初始化方法
命名规则:以initWith开头,后面跟上参数列表
1 - (id)initWithName:(NSString *)name gender:(NSString *)gender {
2 self = [super init];
3 if (self) {
4 _name = name;
5 _gender = gender;
6 }
7 return self;
8 }
3、便利构造器
1. 封装了对象创建过程
内部实现:封装了alloc和初始化操作,创建对象更加简便快捷。
2. 特征
• 便利构造器是 "+" ?法。
• 返回本类型的实例。
• ?法名以类名+ With + 参数列表。
• 可以有 0 到多个参数。
3. 便利构造器声明,实现和调用
声明:
1 + (id)personWithName:(NSString *)name gender:(NSString *)gender;
实现:
1 + (id)personWithName:(NSString *)name gender:(NSString *)gender {
2
3 return [[Person alloc] initWithName:namegender:gender];
4
5 }
调用:
1 Person *per = [Person personWithName:@"Frank" gender:@"男"];
iOS开发-继承特征详解的更多相关文章
- iOS开发技巧系列---详解KVC(我告诉你KVC的一切)
KVC(Key-value coding)键值编码,单看这个名字可能不太好理解.其实翻译一下就很简单了,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值.而不需 ...
- iOS开发——GCD多线程详解
GCD多线程详解 1. 什么是GCD Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,简单来说,GCD就是iOS一套解决多线程的机制,使用GCD能够最大限度简化多线程 ...
- ios开发之--UIViewContentMode详解
在开发当中有时会有这样的需求,将从服务器端下载下来的图片添加到imageView 当中展示,但是下载下来的图片尺寸大小不固定,宽高也有可能不成比例 如果直接设置imageView的image属性而不设 ...
- iOS中—触摸事件详解及使用
iOS中--触摸事件详解及使用 (一)初识 要想学好触摸事件,这第一部分的基础理论是必须要学会的,希望大家可以耐心看完. 1.基本概念: 触摸事件 是iOS事件中的一种事件类型,在iOS中按照事件划分 ...
- iOS 单元测试之XCTest详解(一)
iOS 单元测试之XCTest详解(一) http://blog.csdn.net/hello_hwc/article/details/46671053 原创blog,转载请注明出处 blog.csd ...
- IOS—UITextFiled控件详解
IOS—UITextFiled控件详解 //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGR ...
- 【转】【Android UI设计与开发】之详解ActionBar的使用,androidactionbar
原文网址:http://www.bkjia.com/Androidjc/895966.html [Android UI设计与开发]之详解ActionBar的使用,androidactionbar 详解 ...
- SpringMVC【开发Controller】详解
前言 本文主要是讲解在Controller中的开发,主要的知识点有如下: 编码过滤器 使用注解开发 注解@RequestMapping详解 业务方法接收参数 字符串转日期 重定向和转发 返回JSON ...
- C++的三种继承方式详解以及区别
目录 目录 C++的三种继承方式详解以及区别 前言 一.public继承 二.protected继承 三.private继承 四.三者区别 五.总结 后话 C++的三种继承方式详解以及区别 前言 我发 ...
随机推荐
- 使用ASP.NET广告控件的XML语言创建广告链接--ASP.NET
1.AdRotator广告控件的所有属性都是可选的,XML文件中可以包含如下表所示的属性(XML文件的广告属性). 属性 说明 ImageUrl 要显示的图像的URL NavigateUrl 单 ...
- 【网络流24题】最长k可重线段集(费用流)
[网络流24题]最长k可重线段集(费用流) 题面 Cogs的数据有问题 Loj 洛谷 题解 这道题和最长k可重区间集没有区别 只不过费用额外计算一下 但是,还是有一点要注意的地方 这里可以是一条垂直的 ...
- [BZOJ2752][HAOI2012]高速公路
BZOJ Luogu sol 看上去是道数学期望题但实际上是个傻逼数据结构 首先答案的形式应该就是 \[\frac{\mbox{[l,r]区间内的子区间权值之和}}{\mbox{[l,r]区间内的子区 ...
- [BZOJ1053] [HAOI2007] 反素数ant (搜索)
Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数 ...
- 将PPT文件内容转换为图片放在Email邮件正文中发送
通过Email推送统计报告.一般除了要求将PPT报告文件作为附件发给用户,同时希望将报告内容在邮件中直观展示. 一份统计报告中经常包含柱状图.饼图.好看的图表,这些信息要直接在Email中展示比较复杂 ...
- CSS中的各种FC
什么是FC? Formatting Context,格式化上下文,指页面中一个渲染区域,拥有一套渲染规则,它决定了其子元素如何定位,以及与其他元素的相互关系和作用. BFC 什么是BFC Block ...
- javascript从数组中删除一个元素
Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.sp ...
- PAT乙级-1036.跟奥巴马一起编程(15)
题解 题解: 注意"行数是列数的50%(四舍五入)" #include<iostream> using namespace std; int main() { int ...
- 自定义MVC框架---第一章
MVC基本介绍 介绍: mvc是一种编程思想,用来解决开发项目的时候,代码如何编写,项目如何架构的问题,更具体一点就是解决多人协同开发时,如何分工协作的问题,从而提升开发效率 举一个例子:有一个人想 ...
- 用js写动态时钟 2017-03-23
45每隔1秒变一次: 代码如下: <body onLoad="show()" > ------------表示当页面载入时执行该事件,可以没有 <div id ...