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

下面看一个示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
final class Person {//声明为final,说明它是不能被继承的
     
    var name: String
     
    final var age: Int    //定义的age属性
     
    final func description() -> String {  //定义description实例方法
        return "\(name) 年龄是: \(age)"
    }
     
    final class func printClass() ->() {  //定义printClass静态方法
        print( "Person 打印...")
    }
     
    init (name: String, age: Int){
        self.name = name
        self.age  = age
    }
}
  
class Student: Person {                            //编译错误
     
    var school: String
     
    convenience init() {
        self.init(name: "Tony", age: 18,school: "清华大学")
    }
     
    init (name: String, age: Int,school: String) {
        self.school = school
        super.init(name: name, age: age)
    }
     
    override func description() -> String{         //编译错误    //试图重写description实例方法
        print("父类打印 \(super.description())")
        return "\(name) 年龄是: \(age), 所在学校: \(school)。"
    }
     
    override class func printClass() ->(){      //编译错误  //试图重写printClass静态方法
        print( "Student 打印...")
    }
     
    override var age: Int {                        //编译错误//试图重写age属性
    get {
        return super.age
    }
    set {
        super.age = newValue < 8 8: newValue
    }
    }
}

定义Student类,并声明为Person子类时,会报如下编译错误:

Inheritance from a finalclass 'Person'

定义的age属性也是final,那么在试图重写age属性时,会报如下编译错误:

Var overrides a 'final'var

定义description实例方法,它被声明为final,那么在试图重写description实例方法时,会报如下编译错误:

Instance method overridesa 'final' instance method

定义printClass静态方法,它被声明为final,那么在试图重写printClass静态方法时,会报如下编译错误:

Class method overrides a'final' class method

使用final可以控制我们的类被有限地继承,特别是在开发一些商业软件时,适当地添加final限制是非常有必要的。

本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1747532,如需转载请自行联系原作者

《从零开始学Swift》学习笔记(Day 47)——final关键字相关推荐

  1. 从零开始学STM32(学习笔记——第三天)

    CSDN话题挑战赛第2期 参赛话题:学习笔记 参考文章: [教学文章]STM32内部重要功能全记录 [教学文章]STM32内部核心功能大揭秘 [教学文章]STM32内部重要功能全记录 框架:STM32 ...

  2. 【从零开始学深度学习编译器】十二,MLIR Toy Tutorials学习笔记一

    本笔记由学习MLIR Tutorials总结而成,欢迎批评指正. Chapter1: Toy语言和AST MLIR提供了一种Toy语言来说明MLIR的定义和执行的流程.Toy语言是一种基于张量的语言, ...

  3. 【从零开始学深度学习编译器】十三,如何在MLIR里面写Pass?

    [GiantPandaCV导语]这篇文章是学习了比较久然后按照自己的理解步骤重新总结了下来,主要是MLIR Toy Tutorials第3,4篇文章的内容.这里主要讲解了如何在MLIR中自定义Pass ...

  4. 关东升的《从零开始学Swift》

    这个博文是swift 2.0的,也是可以参考的 http://blog.csdn.net/tonny_guan/article/category/6139217 文章目录 [置顶] 关东升的<从 ...

  5. 关东升的《从零开始学Swift》即将出版

    大家好: 苹果2015WWDC大会发布了Swift2.0,它较之前的版本Swift1.x有很大的变化,所以我即将出版<从零开始学Swift><从零开始学Swift>将在< ...

  6. 动手学深度学习笔记3.4+3.5+3.6+3.7

    系列文章目录 动手学深度学习笔记系列: 动手学深度学习笔记3.1+3.2+3.3 文章目录 系列文章目录 前言 一.softmax回归 1.1 分类问题 1.2 网络架构 1.3 全连接层的参数开销 ...

  7. 影像组学视频学习笔记(43)-标准差、标准误及95%置信区间CI、Li‘s have a solution and plan.

    作者:北欧森林 链接:https://www.jianshu.com/p/f09d0f97592f 来源:简书,已获授权转载 本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(43)主要 ...

  8. 影像组学视频学习笔记(42)-影像组学特征提取问题解决过程复现、Li‘s have a solution and plan.

    作者:北欧森林 链接:https://www.jianshu.com/p/c3e6de2f79b3 来源:简书,已获转载授权 本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(42)主要 ...

  9. 影像组学视频学习笔记(41)-如何使用软件提取组学特征、Li‘s have a solution and plan.

    作者:北欧森林 链接:https://www.jianshu.com/p/72186eb3e395 来源:简书,已获授权转载 本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(41)主要 ...

  10. 影像组学视频学习笔记(37)-机器学习模型判断脑卒中发病时间(文献报告)、Li‘s have a solution and plan.

    作者:北欧森林 链接:https://www.jianshu.com/p/3e7a2c84288e 来源:简书,已获授权转载 RadiomicsWorld.com "影像组学世界" ...

最新文章

  1. 大数据中台向AI中台演进是大势所趋?
  2. Unity 播放音频文件
  3. 重写 View 的 Touch 方法,实现一个酷炫的九宫格图片
  4. oracle初始安装大小
  5. Android GraphicBuffer
  6. ajax成功或失败的原因,实际上成功后,AJAX发布请求报告失败
  7. Grafana Prometheus 服务安装部署(Linux服务器监控)
  8. java保存登录信息_java – 保存登录详细信息(首选项)android
  9. php scandir遍历,php使用scandir()函数扫描指定目录下所有文件示例
  10. php与drupal,php-将网站转换为Drupal-噩梦已经开始
  11. 95-080-046-源码-启动-flink-daemon.sh
  12. grpc 可以传递context嘛_Python中使用gRPC方法示例
  13. Visual Studio 2015 移动跨平台开发初体验
  14. CentOS7 配置免密登陆
  15. MATLAB三维散点图的绘制(scatter3、plot3)
  16. 图片太大怎么压缩变小?图片如何压缩?
  17. tp框架该网页无法正常运作的一个坑
  18. 《矿山经济学》在线平时作业2
  19. millis()和MsTimer2库的使用方法
  20. C语言中用stop,C语言中It stop with signal SIGSEGV ,segmentation fault.解决方法

热门文章

  1. 数据传送到后端(二)
  2. IOS/Android模拟器运行APP调试方法
  3. 【C#小知识】C#中一些易混淆概念总结(三)---------结构,GC,静态成员,静态类...
  4. 基于Bootstrap里面的Button dropdown打造自定义select
  5. 64位win7安装IIS7时不能浏览asp的问题
  6. 电子商务创造的第二次产业机会
  7. swift3.0三种反向传值
  8. 行为型模式:命令模式
  9. EXP6 信息搜集与漏洞扫描
  10. 1112. Stucked Keyboard (20)