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 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...
随机推荐
- YesFinder - 网页文件管理系统 V2.0
2.0版增加了模态框并重写了右键菜单插件.界面改为全中文.使用方式更加灵活. 同时,文件及目录改名更方便,直接双击名称就可改名. 这是DEMO的效果图. 1.功能上的主要改进是可以双击改文件/目录名称 ...
- static变量的使用
静态变量 类型说明符是static. 静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间 ...
- 采访:Go语言编程
Go语言是由Google在2009年11月份公布的,它的目标是要应对软件开发所面临的最新挑战.Go语言特别被设计为快速(包括在编译时).支持多核的语言,并且兼顾了动态语言的简单性和静态类型语言的安全性 ...
- Android修改XML文件
最近在项目中需要使用XML记录数据,网上这方面的文章较少,记录一下 使用DOM方式 /** * 追加内容到XML文档 * @param instructions * @throws ParserCon ...
- 欧拉计划之Largest palindrome product
A palindromic number reads the same both ways. The largest palindrome made from the product of two 2 ...
- Altium中Fill,Polygon Pour,Plane的区别和用法
Fill:表示绘制一块实心的铜皮,将区域中的所有连线和过孔连接在一块,而不考虑是否属于同一个网络.假如所绘制的区域中有VCC和GND两个网络,用Fill命令会把这两个网络的元素连接在一起,这样就有可能 ...
- Thinking in C++: 第1章 为什么C++会成功
本文内容摘抄自C++经典书籍:<Thinking in C++> 操作概念:OOP程序像什么 我们已经知道,用C 语言编写的过程程序就是一些数据定义和函数调用.要理解这种程序的含义,程 ...
- QQ登录-第三方SDK的接入总结(搜索 qq互联)
由于项目的需要,使用了[QQ登录]SDK 的相关功能! 1.集成[QQ登录]SDK [QQ登录]SDK下载地址: http://wiki.open.qq.com/wiki/website/SD ...
- c#调用c++开发的dll const char* 返回值接收问题
原文:c#调用c++开发的dll const char* 返回值接收问题 用c#调用视频接口相关的dll,dll使用c++开发. c++接口定义如下: PLATFORM const char* Pla ...
- COJ 0252 HDNOIP201304阻断传染
HDNOIP201304阻断传染 难度级别: A: 编程语言:不限:运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 H国有n个城市,n个城市用n ...