美文网首页
swift final 关键字

swift final 关键字

作者: 大斑马小斑马 | 来源:发表于2020-11-24 13:56 被阅读0次

final 关键的介绍 以及 列举 非常不建议 在项目中使用

class FinalKeyWordVC: ViewController {
      
   override func viewDidLoad() {
   
       view.backgroundColor = .lightGray
       
       /** 关键字final(最终的) 标记的类不能被继承, 提高安全性,提高程序的可读性
        * 1.final 修饰类,这个类就不能被继承; 如:String类、StringBuffer类、System类等
        * 2.final 修饰方法:不能被重写; 如:Object类的getClass()
        * 3.final 修饰属性,变为常量 属性(没有默认初始化的值);习惯上,常量用大写字符来写!
        *          final常量一旦确定后,就禁止再次复制!
        * 4.变量用 static final +类型 来修饰,即为全局变量!
        * 5.final修饰参数类型,eg:(final Other o){  //强制保护对象o不被new...,但其内部数据仍能修改
        * final 用处一般都只有第三方库才会去用它,对于项目而言 我还没发现除了我 谁还在用 我强烈不建议用
        */
       
       let c = C()
       let d = D()
       
       c.finalKeyFuction()
       c.compareFinalKeyFuction()
       
       d.compareFinalKeyFuction()
       
       print("\(c.a),\(c.b),\(d.a),\(d.b)")
   }
}

// MARK: final 修饰的类的讲解
final class A {

}
/// final 修饰的类不能被继承
//class B: A {
//
//}

class C {
   
   var a:Int {
       return 3
   }
   final var b:Int {
       return 4
   }
   
   /// final 修饰的方法 子类无法重写
   final func finalKeyFuction() {
       print("final 修饰的方法 子类无法重写")
   }
   
   /// 非 final 修饰的方法 子类可重写
   func compareFinalKeyFuction() {
       print("非 final 修饰的方法 子类可重写")
   }
}

class D: C {
   
   /** D继承于C,C就是D的几类 ,D 就是C的派生类
    *  如果继承基类的属性并且想重写它 必须这样写才可以不报错
    *  别闲着没事找事 重写基类的属性了 真几把麻烦
    */
   ///
   override var a: Int {
       return 200
   }
   
   /// final 修饰的属性不能被继承
//    override var b: Int {
//        return 200
//    }
   
   override func compareFinalKeyFuction() {
       print("子类重写了父类的方法")
   }
}

相关文章

网友评论

      本文标题:swift final 关键字

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