首页 > 代码库 > Swift学习笔记十三:继承
Swift学习笔记十三:继承
一个类可以继承(inherit)另一个类的方法(methods),属性(property)和其它特性
重点:
① 和Objective-C一样,继承一个类就是在定义的时候将父类名写在后面class Student:Human
② 继承类之后,会继承父类的所有属性和方法,要想重写父类的方法和属性,需要使用override关键字
③ 对于init()方法,重写不需要使用override
④ 访问父类的方法需要使用关键字super,如:super.description()
二、重写属性和添加观察器
重点:
① 对于类的属性,也可以重写
② 重写属性时可以添加观察器
③ 不能为常量储存属性和只读计算属性添加观察器,因为他们都是不可改变的
三、防止继承或重写
如果不想让某个类被继承,或者不想让某个属性或方法被重写,可以使用final关键字
重点:
① 在class前加@final,此类将不可被继承,否则编译器会报错
② 在属性前加@final,属性将不可被重写,否则编译器会报错
③ 在方法前加@final,方法将不可被重写,否则编译器会报错
一、基本语法
class Human{ var name :String init(){ name = "human" println(name) } func description(){ println("name:\(name)") } } class Student:Human{ var score = 0 init(){ super.init() name = "Student" println(name) } override func description(){ super.description() println("score:\(score)") } }
重点:
① 和Objective-C一样,继承一个类就是在定义的时候将父类名写在后面class Student:Human
② 继承类之后,会继承父类的所有属性和方法,要想重写父类的方法和属性,需要使用override关键字
③ 对于init()方法,重写不需要使用override
④ 访问父类的方法需要使用关键字super,如:super.description()
二、重写属性和添加观察器
class Human{ var name :String init(){ name = "human" } func description(){ println(name) } } class Student:Human{ override var name:String{ willSet{ println("will set \(newValue)") } } override func description() { println("Student name:\(name)") } } var a = Student() a.name = "小笨狼" //输出:will set 小笨狼 a.description() //输出:Student name:小笨狼
重点:
① 对于类的属性,也可以重写
② 重写属性时可以添加观察器
③ 不能为常量储存属性和只读计算属性添加观察器,因为他们都是不可改变的
三、防止继承或重写
如果不想让某个类被继承,或者不想让某个属性或方法被重写,可以使用final关键字
@final class Human{ //① 在class前加@final,此类将不可被继承 @final var name :String //② 在属性前加@final,属性将不可被重写 init(){ name = "human" } @final func description(){ //③ 在方法前加@final,方法将不可被重写 println(name) } }
重点:
① 在class前加@final,此类将不可被继承,否则编译器会报错
② 在属性前加@final,属性将不可被重写,否则编译器会报错
③ 在方法前加@final,方法将不可被重写,否则编译器会报错
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。