美文网首页
Swift 特性关键字final的用法

Swift 特性关键字final的用法

作者: Lewis海 | 来源:发表于2017-05-24 14:30 被阅读135次

关键字final

final关键字在大多数的编程语言中都存在,表示不允许对其修饰的内容进行继承或者重新操作。
Swift中,final关键字可以在class、func和var前修饰。
通常大家都认为使用final可以更好地对代码进行版本控制,发挥更>佳的性能,同时使代码更安全。

什么情况下使用final

  • 想通过使用final提升程序性能 - 效果有限

通常认为final能改成性能,因为编译器能从final中获取额外的信息,因此可以对类或者方法调用进行额外的优化处理。但这中优化对程序性能的提升极其有限。但是这个优势在实际表现中可能带来的好处其实就算与 Objective-C 的动态派发相比也十分有限,因此在项目还有其他方面可以优化 (一般来说会是算法或者图形相关的内容导致性能瓶颈) 的情况下,并不建议使用将类或者方法转为 final 的方式来追求性能的提升。所以如果抱着提升性能的想法,就算把所有不需要继承的方法、类都加上final关键字,也没多大作用。

  • final正确的使用场景 - 权限控制

也就是说这个类或方法不希望被继承和重写,具体情况如下:

  1. 类或者方法的功能确实已经完备了
    这种通常是一些辅助性质的工具类或者方法,特别那种只包含类方法而没有实例方法的类。比如MD5加密类这种,算法都十分固定,我们基本不会再继承和重写。

  2. 避免子类继承和修改造成危险
    有些方法如果被子类继承重写会造成破坏性的后果,导致无法正常工作,则需要将其标为final加以保护。

  3. 为了让父类中某些代码一定会执行
    父类的方法如果想要其中一些关键代码在继承重写后仍必须执行(比如状态配置、认证等)。我们可以把父类的方法定义成final,同时将内部可以继承的部分剥离出来,供子类继承重写。下面通过一段代码演示:

class Parent {
    final func method1() {
        //权限验证(必须执行)
        //.....
         
        method2()
         
        //下面是日志记录(必须执行)
        //..........
    }
     
    func method2(){
        //父类的实现
        //......
    }
}
class Child : Parent {
    //只能重写父类的method2方法,不能重写method1方法
    override func method2() {
        //子类的实现
        //......
    }
}

这样,无论如何我们如何使用 method,都可以保证需要的代码一定被运行过,而同时又给了子类继承和重写自定义具体实现的机会。

相关文章

  • Swift 特性关键字final的用法

    关键字final final关键字在大多数的编程语言中都存在,表示不允许对其修饰的内容进行继承或者重新操作。Swi...

  • final关键字

    final关键字 final(最终、修饰符) final关键字的用法: final关键字修饰一个基本类型的变量时,...

  • 继承

    .继承的特性 .继承关键字 构造器 static final关键字 static修饰方法(静态方法) final

  • 关键字——final

    final 关键字的节本用法 在java中, final 关键字可以 用来修饰类、方法、和变量(包括成员变量和局部...

  • 深入理解final关键字

    final关键字特性 final关键字在java中使用非常广泛,可以申明成员变量、方法、类、本地变量。一旦将引用声...

  • 08 Swift 继承与几大关键字\构造方法\继承与构造方法

    1. Swift继承\super关键字\override关键字\final关键字 继承语法 继承是面向对象最显著的...

  • Java的 final 关键字

    本文主要探讨Java final 关键字修饰变量时的用法。!!!!文末有彩蛋!!!! 1.修饰类 当用final修...

  • swift3学习笔记:final

    final Swift中,final关键字可以在class、func和var前修饰。类或者方法的功能确实已经完备了...

  • 2020-08-08--Java--day11【final、权限

    final关键字 final关键字代表最终、不可改变的。 常见四种用法: 可以用来修饰一个类 可以用来修饰一个方法...

  • Final的用法

    final关键字是我们经常使用的关键字之一,它的用法有很多,但是并不是每一种用法都值得我们去广泛使用。它的主要用法...

网友评论

      本文标题:Swift 特性关键字final的用法

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