封装 encapsulation

隐藏对象内部实现细节,对外仅提供公共接口访问。

(说白了就是属性啊,方法啊全都写在类内,对外只提供访问,不需要了解细节)

继承 inheritance

    一个类型在另外类型基础上进行的扩展实现。

多态 polymorphism

不同类型针对同一行为接口的不同实现方式。

OBJC的继承

【单继承】每一个类只能有一个基类,子类自动继承基类的:

·实例变量

·属性

·实例方法

·类方法

了解所有类的根类:NSObject

继承的两层含义:

成员复用: 子类复用基类成员

类型抽象: 将子类当作父类来使用(IS-A关系准则)

在子类的对象内存中,可以找到一个完全的父类对象内存。

继承中的init和dealloc

子类自动继承基类的初始化器

子类也可以重写基类初始化器,此时子类初始化器必须首先调用基类的一个初始化器(手工调用 self = [super init];)。

子类可以选择继承基类析构器,或者重写基类析构器。

子类析构器执行完毕以后,会自动调用基类析构器(后置调用,且不支持手工调用 [super dealloc]会报错,除非关闭ARC)。

子类析构器自动具有多态性。

Tips:尽量避免在父类init和dealloc中调用子类重写的方法。因为子类在初始化的时候,会自动前置调用父类的初始化器,而父类的初始化器里面调用子类重写方法的话,子类都还没有初始化完毕,这个方法就会报错。析构器也是一样,因为子类重写的析构器,会在最后调用父类的基析构器(后置调用),这时候父类析构器里还有调用子类的方法的话,那些内存早就已经被释放掉了,直接回报错。

多态 运行时多态 Polymorphism

   子类在父类统一行为接口下,表现不同的实现方式。

重写与重载

重写:(与父类同名同参数方法)子类可以重写父类的方法。

重载:(与父类同名不同参数方法)OBJC不支持方法重载,

外部参数不同就直接是另一个方法;外部参数相同而内部参数不同(参数名或者类型)会直接报错。

继承自父类的方法,需要重写的话,直接在实现类上重写就可以了,不需要重新在接口类中声明。

self和super

self具有多态性,可以指向不同子类

super没有多态性,仅指向当前父类

objective-C学习笔记(六)继承与多态的更多相关文章

  1. 0022 Java学习笔记-面向对象-继承、多态、组合

    继承的特点 单继承:每个子类最多只有一个直接父类,注意是直接父类,间接父类个数不限 注意父类的概念:A-->B-->C-->D,在这里,ABC都是D的父类,C是D的直接父类,AB是D ...

  2. Java编程思想学习笔记_2(继承和多态)

    静态初始化: 静态初始化只在必要的时刻进行.(即当程序需要加载类进入内存的时候,执行静态初始化.静态变量和静态代码块的初始化顺序,按照在代码中声明的顺序老执行.例如:如果要执行某个public类,那么 ...

  3. EC++学习笔记(六) 继承和面向对象设计

    条款32:确定你的 public 继承塑模出 is-a 关系 public inheritance 意味着 is-a 关系class Derived 以 public 形式继承 class Base, ...

  4. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  5. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. c++学习笔记之继承篇

    title: c++学习笔记之继承篇 date: 2017-03-26 16:36:33 tags: [c++,继承,public,virtual,private,protected] categor ...

  7. Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  8. python3.4学习笔记(六) 常用快捷键使用技巧,持续更新

    python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...

  9. Go语言学习笔记六: 循环语句

    Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...

  10. 【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

随机推荐

  1. SendMessage的返回值,就是由相应的响应消息函数的返回值(解释的简洁明了)

    SendMessage Return Values The return value specifies the result of the message processing and depend ...

  2. 每天学点Linux:一

    软链接和硬链接: 软链接,又称符号链接,它的原理是通过一个文本文件记录真实文件在系统中的位置,然后在文件操作的时候通过该地址查找原文件然后对其操作.类似于Windows里面的快捷方式.软链接可以链接不 ...

  3. MyEclipse配色字体等配置的解决方案

    Myeclipse黑色配色方案(精心修改版) http://download.csdn.net/detail/rehongchen/6579945 如何改变Myeclipse编辑区背景色 http:/ ...

  4. nodejs开发微信1——微信路由设置a(access_token和tickets)

    /* jshint -W079 */ /* jshint -W020 */ "use strict"; var _ = require("lodash"); v ...

  5. find the mincost route(最小环,最短路,floyd)

    find the mincost route Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  6. Android TextView drawableLeft 在代码中实现

    方法1 Drawable drawable= getResources().getDrawable(R.drawable.drawable); /// 这一步必须要做,否则不会显示. drawable ...

  7. SQLSERVER 列名无效

    很多时候对数据库表修改字段后会出现“列名无效”,或者在查询分析器里面是红色的下划线,造成这个现象的原因是:SQL Server的intellisense(智能感知功能),没有感知到更改,需要重新整理一 ...

  8. Windows 10 : 使用BCDboot恢复双系统启动

    电脑装上win10以后,立马把原来系统的启动信息删了.结果有个软件需要反激活,但是Win10已经没有Boot.ini这样的启动配置文件. 花了好多时间查找,发现这篇文章.实际操作倒是很简单.执行以下命 ...

  9. asp.net、html、javascript等比较有用的网站

    Learn模块下web.mvc.razor等. http://www.asp.net/ 包括html.javascript.jquery.xml等教程. http://www.w3school.com ...

  10. Howie带你云上飘-新浪云

    介绍一下怎么在sae上做个网站 前言 曾经,sae是收费的,计时收费,还挺贵的呢.所以就试玩了一下,没敢继续鼓捣.后来,云计算越来越火了,新浪也不差钱嘛,于是直接给新注册的开发者送好多豆子,于是,免费 ...