《从零开始学Swift》学习笔记(Day 47)——final关键字
在类的定义中使用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关键字相关推荐
- 从零开始学STM32(学习笔记——第三天)
CSDN话题挑战赛第2期 参赛话题:学习笔记 参考文章: [教学文章]STM32内部重要功能全记录 [教学文章]STM32内部核心功能大揭秘 [教学文章]STM32内部重要功能全记录 框架:STM32 ...
- 【从零开始学深度学习编译器】十二,MLIR Toy Tutorials学习笔记一
本笔记由学习MLIR Tutorials总结而成,欢迎批评指正. Chapter1: Toy语言和AST MLIR提供了一种Toy语言来说明MLIR的定义和执行的流程.Toy语言是一种基于张量的语言, ...
- 【从零开始学深度学习编译器】十三,如何在MLIR里面写Pass?
[GiantPandaCV导语]这篇文章是学习了比较久然后按照自己的理解步骤重新总结了下来,主要是MLIR Toy Tutorials第3,4篇文章的内容.这里主要讲解了如何在MLIR中自定义Pass ...
- 关东升的《从零开始学Swift》
这个博文是swift 2.0的,也是可以参考的 http://blog.csdn.net/tonny_guan/article/category/6139217 文章目录 [置顶] 关东升的<从 ...
- 关东升的《从零开始学Swift》即将出版
大家好: 苹果2015WWDC大会发布了Swift2.0,它较之前的版本Swift1.x有很大的变化,所以我即将出版<从零开始学Swift><从零开始学Swift>将在< ...
- 动手学深度学习笔记3.4+3.5+3.6+3.7
系列文章目录 动手学深度学习笔记系列: 动手学深度学习笔记3.1+3.2+3.3 文章目录 系列文章目录 前言 一.softmax回归 1.1 分类问题 1.2 网络架构 1.3 全连接层的参数开销 ...
- 影像组学视频学习笔记(43)-标准差、标准误及95%置信区间CI、Li‘s have a solution and plan.
作者:北欧森林 链接:https://www.jianshu.com/p/f09d0f97592f 来源:简书,已获授权转载 本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(43)主要 ...
- 影像组学视频学习笔记(42)-影像组学特征提取问题解决过程复现、Li‘s have a solution and plan.
作者:北欧森林 链接:https://www.jianshu.com/p/c3e6de2f79b3 来源:简书,已获转载授权 本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(42)主要 ...
- 影像组学视频学习笔记(41)-如何使用软件提取组学特征、Li‘s have a solution and plan.
作者:北欧森林 链接:https://www.jianshu.com/p/72186eb3e395 来源:简书,已获授权转载 本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(41)主要 ...
- 影像组学视频学习笔记(37)-机器学习模型判断脑卒中发病时间(文献报告)、Li‘s have a solution and plan.
作者:北欧森林 链接:https://www.jianshu.com/p/3e7a2c84288e 来源:简书,已获授权转载 RadiomicsWorld.com "影像组学世界" ...
最新文章
- 大数据中台向AI中台演进是大势所趋?
- Unity 播放音频文件
- 重写 View 的 Touch 方法,实现一个酷炫的九宫格图片
- oracle初始安装大小
- Android GraphicBuffer
- ajax成功或失败的原因,实际上成功后,AJAX发布请求报告失败
- Grafana Prometheus 服务安装部署(Linux服务器监控)
- java保存登录信息_java – 保存登录详细信息(首选项)android
- php scandir遍历,php使用scandir()函数扫描指定目录下所有文件示例
- php与drupal,php-将网站转换为Drupal-噩梦已经开始
- 95-080-046-源码-启动-flink-daemon.sh
- grpc 可以传递context嘛_Python中使用gRPC方法示例
- Visual Studio 2015 移动跨平台开发初体验
- CentOS7 配置免密登陆
- MATLAB三维散点图的绘制(scatter3、plot3)
- 图片太大怎么压缩变小?图片如何压缩?
- tp框架该网页无法正常运作的一个坑
- 《矿山经济学》在线平时作业2
- millis()和MsTimer2库的使用方法
- C语言中用stop,C语言中It stop with signal SIGSEGV ,segmentation fault.解决方法