博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift - 43 - 继承, 多态, 析构函数
阅读量:5798 次
发布时间:2019-06-18

本文共 1699 字,大约阅读时间需要 5 分钟。

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)        // 这里传参传的是子类/*--------------------------多态---------------------------*/

  

转载地址:http://ntifx.baihongyu.com/

你可能感兴趣的文章
USB 通信原理
查看>>
7zZip zip RAR iOS
查看>>
ssh无密码登陆远程主机
查看>>
date命令的详细用法!
查看>>
分布式存储ceph集群部署
查看>>
UiAutomator源码分析之UiAutomatorBridge框架
查看>>
python 开发之selenium
查看>>
Xcode3.2.5中找不到Mac OS X - Command Line Utility -...
查看>>
css的div垂直居中的方法,百分比div垂直居中
查看>>
如何理解EM算法
查看>>
nginx 域名跳转一例~~~(rewrite、proxy)
查看>>
我的友情链接
查看>>
linux用户家目录无损迁移到独立硬盘
查看>>
文件查找
查看>>
shell编程前言(一)
查看>>
5、centos7.*配置yum的EPEL源及其它源
查看>>
JSON前后台简单操作
查看>>
shell中一些常见的文件操作符
查看>>
第一次作业
查看>>
ssh连接提示问题
查看>>