《从零开始学Swift》学习笔记(Day 41)——类的继承

原创文章,欢迎转载。转载请注明:关东升的博客  php

Swift中的继承只能发生在类上,不能发生在枚举和结构体上。一个类能够继承另外一个类的方法、属性、下标等特征,当一个类继承其余类时,继承类叫子类,被继承类叫父类(或超类)。子类继承父类后,能够重写父类的方法、属性、下标等特征。 java

为了了解继承性,看这样一个场景:一位面向对象的程序员小赵,在编程过程当中须要描述和处理我的信息,因而他定义了类Person,以下所示:程序员

class Person {     var name: String     var age: Int         func description() -> String {         return "\(name) 年龄是: \(age)"     }     init () {         name = ""         age  = 1     } }

一周之后,小赵又遇到了新的需求,须要描述和处理学生信息,因而他又定义了一个新的类Student,以下所示:编程

class Student {     var name: String     var age: Int       var school: String         func description() -> String {         return "\(name) 年龄是: \(age)"     }     init() {         school = ""         name = ""         age  = 8     } }

不少人会认为小赵的作法可以理解并相信这是可行的,可是问题在于StudentPerson两个类的结构太接近了,后者只比前者多了一个属性school,却要重复定义其余全部的内容,实在让人“不甘心”。Swift提供了解决相似问题的机制,那就是类的继承,代码以下所示:微信

class Student: Person {     var school: String     override init() {         school = ""         super.init()         age  = 8     } }

Student类继承了Person类中的全部特征,“:”以后的Person类是父类。Swift中的类能够没有父类,例如Person类,定义的时候后面没有“:”,这种没有父类的就是基类ide

此外override init()是子类重写父类构造函数。函数

通常状况下,一个子类只能继承一个父类,这称为单继承,但有的状况下一个子类能够有多个不一样的父类,这称为多重继承。在Swift中,类的继承只能是单继承。多重继承能够经过听从多个协议实现。也就是说,在Swift中,一个类只能继承一个父类,可是能够遵循多个协议。网站

 

欢迎关注关东升新浪微博@tony_ 关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
 
更多精品iOSCocos、移动设计课程请关注智捷课堂官方网站:
http://www.zhijieketang.com
智捷课堂论坛网站:
http://51work6.com/forum.phpspa