Swift - 43 - 继承, 多态, 析构函数
import Foundation /*
什么叫继承: 可以简单理解为一个类可以从它的父类或者基类中直接拿属性或者方法去使用
冒号":"表示两者之间的继承关系
*/
class Person
{
/*- 属性 -*/
var name: String = ""
// 储存属性如果没有在创建的时候赋值, 就要在每一个构造方法中(初始化的时候)赋值
var age: Int // 构造方法:每个类都有一个默认的构造方法
// 一个对象创建完毕后, 都需要使用构造方法对其进行初始化, 也就是OC中的初始化方法
// 对比其他方法, 没有func关键字
// 没有返回值
init()
{
// print("这是一个人的构造方法")
// 注意, 在这个初始化方法中也要给age赋值
self.age = 0
} // 自定义构造方法
init(name: String, age: Int)
{
self.name = name
self.age = age
} /*- 方法 -*/
func sleep()
{
print("这个人在睡觉ingzzzzZZ...")
} // 析构函数(相当于OC中的Dealloc), 用于释放对象资源
// deinit的调用是在一个消息处理结束之后发生的。所谓消息处理就是指你的线程所对应的AutoreleasePool在该线程的runloop执行模式下,
// 处理完一个指定的event,比如点击事件,定时器时间,网络传输事件等。所以,你这里设置为nil,该对象并不会真正去调用deinit方法。
deinit
{
// print("这个人被释放掉了")
}
} class Man: Person {
// override表示重写父类的方法
// 默认初始化方法会自动调用父类的初始化方法
override init() {
super.init()
// print("这是那个男人的构造方法")
} deinit
{
// print("这个男人被释放掉了")
} override func sleep() {
print("那个男人在睡觉....")
}
} var man = Man()
// 使用父类的属性
man.name = "Rinpe"
// 使用父类的方法
//man.sleep() /*--------------------------测试析构函数---------------------------*/ func f()
{
let person = Person()
person.name = "某某"
} f() /*--------------------------测试析构函数---------------------------*/ /*--------------------------多态---------------------------*/ // 多态:父类指针指向子类对象
// 编译的时候是父类, 但真正使用的时候是子类
var personOne: Person = Man()
// 这里调用的其实是子类的方法
personOne.sleep() func somebodyRun(person: Person) // 这里参数定义的时候用的是父类
{
print("\(person.name)正在跑动")
} somebodyRun(man) // 这里传参传的是子类 /*--------------------------多态---------------------------*/
Swift - 43 - 继承, 多态, 析构函数的更多相关文章
- Python设计模式 - 基础 - 封装 & 继承 & 多态
面向对象的核心是对象,世间万物都可以看作对象,任何一个对象都可以通过一系列属性和行为来描述,可以包含任意数量和类型的数据或操作.类是用来描述具有相同属性和方法的所有对象的集合.类通常是抽象化的概念,而 ...
- Java基础——面向对象(封装——继承——多态 )
对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...
- Winform打砖块游戏制作step by step第5节---重构代码,利用继承多态
一 引子 为了让更多的编程初学者,轻松愉快地掌握面向对象的思考方法,对象继承和多态的妙用,故推出此系列随笔,还望大家多多支持. 二 本节内容---重构代码,利用继承多态 1. 主界面截图如下: 2. ...
- java面向对象(封装-继承-多态)
框架图 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向对象的特点 ...
- 浅谈学习C++时用到的【封装继承多态】三个概念
封装继承多态这三个概念不是C++特有的,而是所有OOP具有的特性. 由于C++语言支持这三个特性,所以学习C++时不可避免的要理解这些概念. 而在大部分C++教材中这些概念是作为铺垫,接下来就花大部分 ...
- No2_4.接口继承多态_Java学习笔记_经典案例
import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collections; import jav ...
- Java继承多态中的方法访问权限控制
java中的方法天生具有继承多态特性,这点与C++有很大不同(需要在父类方发上加virtual关键字),但用起来确实方便了许多. 最简单的继承多态 声明一个接口BaseIF,只包含一个方法声明 pub ...
- Java三大特性(封装,继承,多态)
Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...
- Java开发知识之Java的继承多态跟接口*
Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...
随机推荐
- Ajax是什么(转)
原文:http://www.nowamagic.net/ajax/ajax_Production.php Ajax 由 HTML.JavaScript™ 技术.DHTML 和 DOM 组成,这一杰出的 ...
- acdream暴力专场中的优美暴力
F - 小晴天老师系列——苹果大丰收 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Other ...
- swift和 oc 混编2-备
在Swift语言出现之前,开发iOS或OS X应用主要使用Objective-C语言,此外还可以使用C和C++语言,但是UI部分只能使用Objective-C语言. 选择语言 Swift语言出现后,苹 ...
- ubuntu14.04使用reaver跑pin码
今天刚说过没找到支持ubuntu14.04用reaver跑pin的旧版库文件这就有摸索到方法了... 另外安装系统ubuntu14.04以及一系列破解工具比如aircrack,minidwep等都不在 ...
- Web开发-各状态码的意思
常见的HTTP 1.1状态码以及它们对应的状态信息和含义 100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分.(HTTP 1.1新) 101 Switching Protoc ...
- v8 源码获取与build
最近准备在工作之余研究下v8,下班时间鼓捣了2天,现在终于能下载,能gclient sync了. 刚开始的目的就是跑一个hello world,按照wiki上的例子来: https://github. ...
- Entity Framework with MySQL 学习笔记一(insert,update,delete)
先说说 insert 吧. 当EF执行insert时,如果我们传入的对象是有关联(1对多等)的话,它会执行多个语句 insert到多个表, 并且再select出来填充我们的属性(因为有些column默 ...
- smart pointer (auto_ptr)
很多人听说过标准auto_ptr智能指针机制,但并不是每个人都天天使用它.这真是个遗憾,因为auto_ptr优雅地解决了C++设计和编码中常见的问题,正确地使用它可以生成健壮的代码.本文阐述了如何正确 ...
- HDOJ 1395 2^x mod n = 1
Problem Description Give a number n, find the minimum x(x>0) that satisfies 2^x mod n = 1. Input ...
- NERDTree这个插件的用法简介
事情是这样子的,想做做李治军老师班的操作系统实验,但是Linux上的gedit太简陋了(这个简陋程度堪比Windows环境下的"记事本"),被杨世祺大神嘲笑了.我心想既然在linu ...