美文网首页swift
Swift中的final修饰符

Swift中的final修饰符

作者: chouson_chan | 来源:发表于2017-01-17 10:13 被阅读428次

Swift中的final修饰符

Swift中的final修饰符可以防止类(class)被继承,还可以防止子类重写父类的属性、方法以及下标。需要注意的是,final修饰符只能用于类,不能修饰结构体(struct)和枚举(enum),因为结构体和枚举只能遵循协议(protocol)。虽然协议也可以遵循其他协议,但是它并不能重写遵循的协议的任何成员,这就是结构体和枚举不需要final修饰的原因。

final修饰符的几点使用原则

  • final修饰符只能修饰类,表明该类不能被其他类继承,也就是它没资格当父类。
  • final修饰符也可以修饰类中的属性、方法和下标,但前提是该类并没有被final修饰过。
  • final不能修饰结构体和枚举。

代码示例

final class Train {
    //Todo...
}

class MaglevTrain: Train {  // 编译失败
    //Todo...
}

上面代码中,因为Train类被final修饰过,所以当MaglevTrain类继承了Train后,编译器会提示错误。

class Train {
    final func method() {
        //Todo...   
    }
}

class MaglevTrain: Train {  
    override func method() {  // 编译失败
        //Todo...
    }
}

上面的代码中,因为Train类中的method方法被final修饰过,所以当子类MaglevTrain重写父类的method方法时,编译器会提示错误。

原文出处:http://www.devtalking.com/articles/swift-final/

此处扩展延伸一下

添加一个final修饰的单例方法

public final class Singleton {
    public static let share = Singleton()
    private init() {}
}

是不是很简单,才两句代码,对上面的代码进行解读会发现,static在swift中有一个作用叫做 “类型范围作用域” ,当static修饰了一个成员变量或者常量时,那么这个类就拥有了类属性,在OC当中大家都知道static的作用是修饰静态变量,有很多相关文章此处不再详述。知道了static的作用,这样子我们就可以为类添加类属性

public final class Singleton {
    var objName: String?
    public static let share = Singleton()
    private init() {}
    public static var className: String?
}

修改了一下代码,对单例singleton添加了对象属性objName、类属性className

屏幕快照 2017-01-17 10.04.30.png 屏幕快照 2017-01-17 10.06.55.png

嗯!今天就到这里吧,发觉自己真不会写文章😔
大家还是看一下参考文章吧!
http://swifter.tips/static-class/
http://swift.gg/2017/01/10/dear-erica-singletons-and-property-observers/

相关文章

  • Swift中的final修饰符

    Swift中的final修饰符 Swift中的final修饰符可以防止类(class)被继承,还可以防止子类重写父...

  • Java中的final修饰符

    Java中的final修饰符 Java中final修饰符既可以修饰变量、方法,也可以修饰类。用final修饰的变量...

  • Swift中的final修饰符

    Swift中的final修饰符可以防止类(class)被继承,还可以防止子类重写父类的属性、方法以及下标。需要注意...

  • Swift final关键字

    Swift中的final修饰符可以防止类(class)被继承,还可以防止子类重写父类的属性、方法以及下标。需要注意...

  • kotlin修饰符

    1. open、final 和 abstract 修饰符:默认为 final 修饰符相关成员评注final不能被重...

  • final修饰符

    final修饰符是java中比较简单的修饰符,但也是一个被误解最多的修饰符。final可以修饰变量,被final修...

  • java代码开发注意事项

    1、尽量指定类的final修饰符 带有final修饰符的类是不可派生的。 在Java核心API中,有许多应用fin...

  • Java 代码性能优化收录

    1、尽量指定类、方法的final修饰符带有final修饰符的类是不可派生的。在Java核心API中,有许多应用fi...

  • 每天学一点 Kotlin -- 类的进阶:修饰符

    1. 修饰符 1.1 在 Kotlin 中,修饰符有:open/final,private/protected/i...

  • 1.Kotlin -- 类的进阶:修饰符

    1. 修饰符 1.1 在 Kotlin 中,修饰符有:open/final,private/protected/i...

网友评论

    本文标题:Swift中的final修饰符

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