final关键字在大多数的编程语言中都存在,表示不允许对其修饰的内容进行继承或者重新操作。Swift中,final关键字可以在class、func和var前修饰。

通常大家都认为使用final可以更好地对代码进行版本控制,发挥更佳的性能,同时使代码更安全。下面对这些说法做个总结。

1,想通过使用final提升程序性能 - 效果有限
通常认为final能改成性能,因为编译器能从final中获取额外的信息,因此可以对类或者方法调用进行额外的优化处理。但这中优化对程序性能的提升极其有限。
所以如果抱着提升性能的想法,就算把所有不需要继承的方法、类都加上final关键字,也没多大作用。还不如花时间去优化下程序算法。
2,final正确的使用场景 - 权限控制
也就是说这个类或方法不希望被继承和重写,具体情况如下:
(1)类或者方法的功能确实已经完备了
这种通常是一些辅助性质的工具类或者方法,特别那种只包含类方法而没有实例方法的类。比如MD5加密类这种,算法都十分固定,我们基本不会再继承和重写。
(2)避免子类继承和修改造成危险
有些方法如果被子类继承重写会造成破坏性的后果,导致无法正常工作,则需要将其标为final加以保护。
(3)为了让父类中某些代码一定会执行
父类的方法如果想要其中一些关键代码在继承重写后仍必须执行(比如状态配置、认证等)。我们可以把父类的方法定义成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
class Parent {
    final func method1() {
        //权限验证(必须执行)
        //.....
         
        method2()
         
        //下面是日志记录(必须执行)
        //..........
    }
     
    func method2(){
        //父类的实现
        //......
    }
}
class Child : Parent {
    //只能重写父类的method2方法,不能重写method1方法
    override func method2() {
        //子类的实现
        //......
    }
}

Swift - final关键字的介绍,以及使用场景相关推荐

  1. Java笔记017-类变量和类方法、理解main方法语法、代码块、单例设计模式、final关键字

    目录 面向对象编程(高级部分) 类变量和类方法 类变量-提出问题 传统方法解决 问题分析: 类变量快速入门 类变量内存布局 什么是类变量 如何定义类变量定义语法: 如何访问类变量 定义语法: 类变量使 ...

  2. 详解java中的final关键字

    概述 final 简介 final关键字可用于多个场景,且在不同场景具有不同的作用.首先,final是一个非访问修饰符,仅适用于变量,方法或类.下面是使用final的不同场景: 上面这张图可以概括成: ...

  3. 什么场景要用@bean_【176期】面试官:你知道为什么要加 final 关键字了吗?

    点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅 阶段汇总集 ...

  4. 17.Java常用实用类之String类中常用的方法以及一般应用场景,final关键字

    文章目录 1.String类学习 1.1.什么是String类 1.2.String类中常用的方法 1.2.1. 构造方法 1.2.2.public int length() 1.2.3.public ...

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

    在类的定义中使用final关键字声明类.属性.方法和下标.final声明的类不能被继承,final声明的属性.方法和下标不能被重写. 下面看一个示例: 1 2 3 4 5 6 7 8 9 10 11 ...

  6. 关于Java中final关键字的详细介绍

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...

  7. Java面试题,深入理解final关键字

    final关键字 final的简介 final可以修饰变量,方法和类,用于表示所修饰的内容一旦赋值之后就不会再被改变,比如String类就是一个final类型的类. final的具体使用场景 fina ...

  8. Java 中关于this、static、final 关键字的使用

    this关键字 this 关键字主要有以下几种作用: 1:当类成员变量与局部成员变量重名时,可以用this 关键字把局部成员变量赋值给类成员变量 2:this可以用来在构造函数中调用其他构造函数    ...

  9. Java查漏补缺(08)关键字:static、单例设计模式、理解main方法、类的成员之四:代码块、final关键字、抽象类、接口、内部类、枚举类、注解、包装类

    Java查漏补缺(08)关键字:static.单例设计模式.理解main方法.类的成员之四:代码块.final关键字.抽象类.接口.内部类.枚举类.注解.包装类 本章专题与脉络 1. 关键字:stat ...

最新文章

  1. GeoIP的使用 - PHP版
  2. JAVA:this的使用
  3. java集合sort底层实现_Java面试总结系列之Collections.sort()
  4. 【求解】未定义的析构函数
  5. 达拉斯大学计算机硕士专业排名,美国大学研究生专业排名:人机交互
  6. 2. linux的日志文件在哪个目录,位于/var/log目录下的20个Linux日志文件
  7. 马斯克:电动皮卡Cybertruck尺寸在短时间内不会变小
  8. ip受限 linux_从linux源码看epoll及epoll实战揭秘
  9. GitHub student pack
  10. NET框架下使用双缓冲技术绘图
  11. c# 解析Xml文件
  12. DirectX修复工具常见问题解答
  13. 在Windows Xp上实现Ubuntu主题风格!
  14. 测试所用的技术(黑盒、白盒测试等)
  15. 软件公司中的“黑社会
  16. 订单管理_04删除订单信息流程
  17. 初中数学分几个模块_初中数学所有概念! 初中数学一共可以分为几个模块,分别是什么?...
  18. uniPaas入门(magic最新版本改名叫uniPaas,unipaas也就是以前的magic)
  19. 计算机 我们一起学猫叫歌词,猫叫是什么歌 抖音我们一起学猫叫完整版歌词
  20. 高考,你们一定要加油

热门文章

  1. mysql characterencoding 枚举值_mysql中enum类型理解,读完之后,大部分程序员收藏了......
  2. 智能卡门禁管理系统_综合门禁管理信息系统相关技术及未来准备
  3. k-core与k-shell的区别
  4. 本地传送命令到远程主机上执行的方法
  5. centos7离线安装bazel
  6. logic多分类的两种类别
  7. python raise函数_Python raise用法
  8. linux内存地址断点,开发一个 Linux 调试器(三):寄存器和内存
  9. Flutter学习记录(一、Flutter环境搭建)
  10. 服务器于本地间进行复制粘贴