先看个例子 

从上面的例子可以总结那么一句话:”学生是人”。也就是Student类继承People类。简而言之,学生是人,这句话是说得通的,但是”人是学生”这句话是说不通的,不是学生就不是人了嘛?

从代码中,我们可以看出Student具有People类的特征,同时也加入自己的新特性。也就是说下一层肯定是上一层,上一层不一定是下一层。由上到下,是个具体化 的过程;由下而上,是个抽象画的过程。

一、继承性 
1、概念: 我们使用”:”符号表示继承关系,在定义类时(子类)的类名后面加上”:”符号和基类名(父类),表示当前定义的类继承了该基类(父类)。

2、继承的好处 
(1)子类天然就获得父类的特征,大大减少代码的冗余。 
(2)子类可以重写父类的方法,表现出新的特性 
(3)通过继承,子类自动就获取父类相关的属性和方法 
(4)父类的属性和行为也是子类的

3、self和super的区别 
self:当前当前实例 
super: 用于访问父类(基类)的属性或者方法 
(用上面的例子可以说这么句话:要是学生的前提,首先你必须先具备人的属性和行为,否则你不可能成为学生。所以在初始化方法中,如果重写了父类的初始化方法,那必须调用父类的初始化方法),在子类中,访问父类的方法或者属性,既可以用self,也可以用super关键字。

4、”:” :父类的行为和属性也是子类的 
例如: 上面的例子:Student类继承People类,那么父类的name、professional属性也是Student本身具有的,所以在Student中访问name和professional既可以用self访问,也可以用super访问。

5、override :子类重写父类的方法,表现出新的特性 
例如: Student重写父类的初始化方法init()和say()方法,在say方法中,输出了新的特性,多个number属性。 
子类重写父类的方法,在子类的func前添加override关键字修饰,表示子类重写父类的方法。

6、final: 有些方法父类不希望子类去重写(权限设定) 
例如: People类的方法noAllowOverRide不允许子类Student去重写,那么仅需要在 noAllowOverRide 的func前添加final关键字修饰即可,表示父类不允许继承它的子类重写这个方法

7、重写和重载的区别 
重写: 同名、同参数(参数名、参数类型)、同返回值,针对不同对象,存在继承关系 
重载 : 在同一类实现多个同名的方法,参数名或者参数类型不同,方法名相同,针对同一个对象,不存在继承关系。

二、多态性 
1、定义: 同样的操作或方法,不同对象在执行时候表现出出现完全不同的行为 
2、多态的条件(下面两个条件必须同时满足,缺一不可) 
(1)必须存在继承关系 
(2)子类对父类的方法进行重写(同名、同参数<参数名、参数类型>、同返回值) 
3、多态的例子 

三、封装性 
1、封装的目的

(1)为了使我们使用数据更加方便 
(2) 为了数据保护

2、常用的访问修饰符 
(1)private(私有):只能在当前Swift源文件(当前类)中使用

(2)public(共有的):引用该文件,就能访问其属性和方法

(3)interval: 缺省情况下,所有的属性和方法都是interval访问级别。interval所修饰的属性或方法,在源代码所在的整个模块都可以使用。

注意:Swift对访问权限的控制,不是基于类,而是基于文件

3、访问修饰符的举例 
建立普通命令行文件File.Swift如下

在main.swift可直接对其一些属性访问 

0

Swift学习 OOP三大特性:继承、多态、封装相关推荐

  1. 面向对象三大特性 -- 继承,封装,多态

    继承: 1.继承是面向对象程序设计能够提供软件开发效率的重要原因之一: 2.继承是具有传递性的: 3.继承来的属性和方法时隐式的,也就是在本类里面是看不见的: 4.一个类只能有一个父类,也就是只能单继 ...

  2. 用孔子装爹学习java三大特性之多态

    孔子装爹例子学多态 一. 概述 1.1引入 1.2 定义 1.3 前提[重点] 2 例子一 2.1 父类 2.2 子类 2.3 启动类 2.4 打印 二..例子2:孔子装爹(只是个名字) 2.1 孔子 ...

  3. OOP三大特性之多态

    官方描述:不同对象可以响应(调用)同一个方法,产生不同的结果 (对猫,狗,发出吃的命令时,猫去吃鱼,狗去吃骨头) 好处:提高程序的扩展性 具体的:父类建立一套规范,无需实现内部的方法,子类按照这套规范 ...

  4. 面向对象的三大特性之多态,封装基础

    面向对象的三大特性  :  继承    多态    封装 多态:一个类表现出多种形态:通过继承来实现的 在python中:由于函数的参数不需要指定数据类型,所以也不需要通过继承的形式来统一一组类的类型 ...

  5. Java学习笔记二十五:Java面向对象的三大特性之多态

    Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...

  6. OOP 三大特征之多态(Polymorphism)

    OOP三大特性最重要的:多态. 很多程序员虽然在用支持OOP的语言,但却从未用过多态. 只使用封装.继承的编程方式,称为基于对象(Object Based)编程 只有加入多态,才能称为OOP 没写过多 ...

  7. polymorphism java_Java基础-面向对象第三大特性之多态(polymorphism)

    Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...

  8. C++三大特性之多态(详细)

    C++特性详解 C++分为三大特性:_封装._继承._多态 _封装: 类是面向对象程序设计语言中的一个概念.类是对某个对象的定义.包含有关对象动作方式的信息,包括它的名称.方法.属性和事件. 封装的类 ...

  9. java 面向对象三大特性之多态 万字详解(超详细)

    目录 前言 : 一.为什么需要多态 : 1.白璧微瑕 : 2.举栗(请甘雨,刻晴,钟离吃饭): 3.代码 : 4.问题 : 二.什么是多态 : 1.定义 : 2.多态的实现步骤(重要) : 三.多态的 ...

最新文章

  1. MAML-Tracker:用目标检测思路做目标跟踪?小样本即可得高准确率丨CVPR 2020
  2. python输入输出流详解_Python 初体验之 输入输出流
  3. .net堆栈与托管堆的区别
  4. Nginx 实现网站 http、https 配置
  5. php 一些个 常用 函数
  6. 九年级数学解方程50道_初中数学公式中考知识点总结,初三数学上册,九年级数学上册...
  7. 元素(HYSBZ-2460)
  8. Win2003远程桌面报错:RPC错误 解决办法
  9. 95-130-340-源码-source-kafka相关-FlinkKafkaConsumer分析
  10. 一道头条面试题,小夕差点没读懂题目,找出数组中缺失的数字,最近击败100%的用户!...
  11. R_空间插值_必知必会(二)
  12. 计算机桌面壁纸在哪个文件夹,Win10桌面背景在哪个文件夹 Win10桌面背景所在文件夹介绍...
  13. ad 原理图放置差分对_Altium Designer差分对设置方法
  14. Collected errors: * opkg_conf_load: Could not lock /var/lock/opkg.lock: Resource temporarily unavail
  15. python中格式化字符串的使用_Python中的格式化字符串
  16. 微信小程序map组件点聚合初次使用的坑
  17. jenkins 使用过程问题解决方法
  18. [转]深入理解RunLoop
  19. Android listview使用适配器时出现 Attempt to invoke virtual method xxxxxxxx on a null object reference问题解决方法
  20. Aspose.Words开发者指南

热门文章

  1. alert在asp.net中如何使用??
  2. Google Test(GTest)使用方法和源码解析——自动调度机制分析
  3. 二维码Data Matrix简介及在VS2010中的编译
  4. Java获取游戏头像_java爬取堆糖所有头像(高质量版头像)
  5. 所有表单对象_Laravel 表单方法伪造与 CSRF 攻击防护
  6. 【spring】springAop开发
  7. python怎么读_如何用Python读写文件
  8. 什么是互联网大厂_仅限今天!大厂最热数据分析经典实战项目大公开!
  9. VS Code – No source control providers 解决方法
  10. 【一步步学小程序】3. 使用自定义组件(component)