Swift学习笔记十三:继承

it2025-07-13  11

一个类能够继承(inherit)还有一个类的方法(methods),属性(property)和其他特性

一、基本的语法

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 keyword      ③ 对于 init () 方法,重写不须要使用 override        ④ 訪问父类的方法须要使用keyword 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 keyword

@final class Human{ //① 在class前加@final。此类将不可被继承 @final var name :String //② 在属性前加@final。属性将不可被重写 init(){ name = "human" } @final func description(){ //③ 在方法前加@final,方法将不可被重写 println(name) } } 重点:         class 前加 @final ,此类将不可被继承。否则编译器会报错             ②   在属性前加 @final 。属性将不可被重写,否则编译器会报错         在方法前加 @final ,方法将不可被重写,否则编译器会报错

转载于:https://www.cnblogs.com/bhlsheji/p/5211946.html

相关资源:数据结构—成绩单生成器
最新回复(0)