美文网首页
Swift Final 关键字

Swift Final 关键字

作者: LikeSomeBody | 来源:发表于2017-11-10 15:13 被阅读12次

应用场景:

使用final可以控制我们的类被有限地继承,特别是在开发一些商业软件时,为了避免封装好的SDK中的类 被继承的然后修改。适当地添加final限制是非常有必要的。

功能介绍:

在类的定义中使用final关键字声明类、属性、方法和下标。final声明的类不能被继承,final声明的属性、方法和下标不能被重写。

下面  我们用 Swift 来演示一下 这些功能。

代码示例:

下面这是一个  final 修饰的 基类 Person

final class Person{

var name:String=""

final var age:Int=0

final func description() ->String{

return"\(name) age is:\(age)"

}

init(name:String,age:Int) {

self.name= name

self.age= age

}

}

下面  我们用一个 类 Student 继承自Person 类 然后重写这些方法 

// 直接报错从继承关系来看

classStudent:Person{//编译错误试图继承自一个 final 修饰的类

varschool:String

convenienceinit(){

self.init(name:"DeLong", age:20, school:"浙江大学")

}

// 重写的 init 方法 也不行 报错

overrideinit(name:String, age:Int,school:String) {

self.school= school;

super.init(name: name, age: age)

}

//

overridefuncdescription () ->String{

print("super log")

return"\(name) 年龄是:\(age), 所在学校:\(school)。"

}

overrideclassfuncprintClass() ->() {//编译错误//试图重写printClass静态方法

print("Student 打印...")

}

//

overridevarage:Int{//编译错误 //试图重写age属性

get{

returnsuper.age;

}

set{

super.age= newValue <8?8:newValue

}

}

}

如下图所示。

errorMsg

重写set 和 get 也是的。

相关文章

网友评论

      本文标题:Swift Final 关键字

      本文链接:https://www.haomeiwen.com/subject/bzmbmxtx.html