Swift学习 OOP三大特性:继承、多态、封装
先看个例子
从上面的例子可以总结那么一句话:”学生是人”。也就是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.继承是面向对象程序设计能够提供软件开发效率的重要原因之一: 2.继承是具有传递性的: 3.继承来的属性和方法时隐式的,也就是在本类里面是看不见的: 4.一个类只能有一个父类,也就是只能单继 ...
- 用孔子装爹学习java三大特性之多态
孔子装爹例子学多态 一. 概述 1.1引入 1.2 定义 1.3 前提[重点] 2 例子一 2.1 父类 2.2 子类 2.3 启动类 2.4 打印 二..例子2:孔子装爹(只是个名字) 2.1 孔子 ...
- OOP三大特性之多态
官方描述:不同对象可以响应(调用)同一个方法,产生不同的结果 (对猫,狗,发出吃的命令时,猫去吃鱼,狗去吃骨头) 好处:提高程序的扩展性 具体的:父类建立一套规范,无需实现内部的方法,子类按照这套规范 ...
- 面向对象的三大特性之多态,封装基础
面向对象的三大特性 : 继承 多态 封装 多态:一个类表现出多种形态:通过继承来实现的 在python中:由于函数的参数不需要指定数据类型,所以也不需要通过继承的形式来统一一组类的类型 ...
- Java学习笔记二十五:Java面向对象的三大特性之多态
Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...
- OOP 三大特征之多态(Polymorphism)
OOP三大特性最重要的:多态. 很多程序员虽然在用支持OOP的语言,但却从未用过多态. 只使用封装.继承的编程方式,称为基于对象(Object Based)编程 只有加入多态,才能称为OOP 没写过多 ...
- polymorphism java_Java基础-面向对象第三大特性之多态(polymorphism)
Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...
- C++三大特性之多态(详细)
C++特性详解 C++分为三大特性:_封装._继承._多态 _封装: 类是面向对象程序设计语言中的一个概念.类是对某个对象的定义.包含有关对象动作方式的信息,包括它的名称.方法.属性和事件. 封装的类 ...
- java 面向对象三大特性之多态 万字详解(超详细)
目录 前言 : 一.为什么需要多态 : 1.白璧微瑕 : 2.举栗(请甘雨,刻晴,钟离吃饭): 3.代码 : 4.问题 : 二.什么是多态 : 1.定义 : 2.多态的实现步骤(重要) : 三.多态的 ...
最新文章
- MAML-Tracker:用目标检测思路做目标跟踪?小样本即可得高准确率丨CVPR 2020
- python输入输出流详解_Python 初体验之 输入输出流
- .net堆栈与托管堆的区别
- Nginx 实现网站 http、https 配置
- php 一些个 常用 函数
- 九年级数学解方程50道_初中数学公式中考知识点总结,初三数学上册,九年级数学上册...
- 元素(HYSBZ-2460)
- Win2003远程桌面报错:RPC错误 解决办法
- 95-130-340-源码-source-kafka相关-FlinkKafkaConsumer分析
- 一道头条面试题,小夕差点没读懂题目,找出数组中缺失的数字,最近击败100%的用户!...
- R_空间插值_必知必会(二)
- 计算机桌面壁纸在哪个文件夹,Win10桌面背景在哪个文件夹 Win10桌面背景所在文件夹介绍...
- ad 原理图放置差分对_Altium Designer差分对设置方法
- Collected errors: * opkg_conf_load: Could not lock /var/lock/opkg.lock: Resource temporarily unavail
- python中格式化字符串的使用_Python中的格式化字符串
- 微信小程序map组件点聚合初次使用的坑
- jenkins 使用过程问题解决方法
- [转]深入理解RunLoop
- Android listview使用适配器时出现 Attempt to invoke virtual method xxxxxxxx on a null object reference问题解决方法
- Aspose.Words开发者指南
热门文章
- alert在asp.net中如何使用??
- Google Test(GTest)使用方法和源码解析——自动调度机制分析
- 二维码Data Matrix简介及在VS2010中的编译
- Java获取游戏头像_java爬取堆糖所有头像(高质量版头像)
- 所有表单对象_Laravel 表单方法伪造与 CSRF 攻击防护
- 【spring】springAop开发
- python怎么读_如何用Python读写文件
- 什么是互联网大厂_仅限今天!大厂最热数据分析经典实战项目大公开!
- VS Code – No source control providers 解决方法
- 【一步步学小程序】3. 使用自定义组件(component)