zoukankan      html  css  js  c++  java
  • Swift 继承

    前言

    • 与其它面向对象语言一样,Swift 中的类也有继承特性。

      • 一个类可以继承另一个类的方法、属性和下标。
      • 当一个类继承其它类,继承类叫子类,被继承类叫做超类或父类。
      • 在 Swift 三大数据结构中,只有类拥有继承的特性,结构体和枚举是没有的。
      • 在 Swift 中子类可以访问和调用父类中的属性、方法和下标,并且可以h使用关键字 override 来重写。

    1、Swift 继承

    • Swift 语言中使用 : 符号来表示继承的关系,在定义类时的类名后加上 : 符号和基类名,表示当前定义的类继承了该基类。

      • 继承后子类自动就获得了父类的相关属性和方法。
      • self 指向的是当前对象,而对于超类属性和方法的访问,如果继承自父类或祖先类的,就可以用 self 来访问。但在初始化方法中,我们调用父类的 init 方法时,只能用 super 来指向和访问。

    2、重写(覆盖)

    • 如果子类和父类的方法、属性重名,有一个专门的术语叫覆盖或者重写。

      • 我们可以在子类中写上同名,同样参数和返回值的方法,以重写父类中的相应方法。
      • 参数一定要相同,否则就是重载,而不是重写或者覆盖。
      • 可以将一个继承来的只读属性重写为一个只读属性,只需在重写版本的属性里提供 get 方法和 set 方法即可。
      • 不可将一个继承来的读写属性重写为一个只读属性。
      • 可以在属性重写中为一个继承来的属性添加属性观察者。
    • 重写方法或参数时需在方法的 func 前和属性的类型 var 前加上 override 关键字。

      /// 父类
      class Transport {
      
          var scope = ""
      
          func move() {
              print("move")
          }
      }   
      
      /// 子类
      class Car: Transport {
      
          // 重写属性
          override var scope: String {
              didSet {
                  print("Car scope")
              }
          }
      
          // 重写方法
          override func move() {
              print("Car move")
          }
      
          // 调用父类中的方法
          func superMove() {
              super.move()
          }
      }
      
    • 可以在不希望被子类重写的方法、属性或下标前面写上关键字 final,以防止他们被子类重写。甚至可以在类的定义前写上 final,使整个类都不能被继承。

      class Transport {
      
          var scope = ""
      
          // 使得 move 方法不能被重写
          final func move() {
              print("move")    
          }
      }
      
      // 使得 Transport 类不能被继承
      final class Transport {
      
          var scope = ""
          
          func move() {
              print("move")
          }
      }
      
  • 相关阅读:
    WM_MOUSEWHEEL消息的处理
    Delphi之TStrings和TStringLists类[转]
    使用mysqladmin命令修改Mysql密码
    AP_发票与预付款核销时预付款带税码
    ORACLE EBS AP发票到付款的数据流
    .关于货币大写的探索
    Oracle SQL 空值排序(Nulls)
    实现主从关系Form中汇总行金额/数量
    巧妙的查看FORM中的 LOV查询语句
    供应商接口的使用
  • 原文地址:https://www.cnblogs.com/QianChia/p/8652317.html
Copyright © 2011-2022 走看看