美文网首页
Swift 5.x 类的定义

Swift 5.x 类的定义

作者: ShenYj | 来源:发表于2020-07-05 17:10 被阅读0次
1.定义基类
  • 任何不从另一个类继承的类都是所谓的基类
  • Swift类不会从一个通用基类继承. 你没有指定特定父类的类都会以基类的形式创建.

class Vehicle {
    var currentSpeed = 0.0
    var description: String {
        "traveling at \(currentSpeed) miles per hour"
    }
    
    func makeNoise() -> Void {
        
    }
}
2.定义子类
  • 子类是基于现有类创建新类的行为.子类从现有的类继承了一些特征, 你可以重新定义它们. 你也可以为子类添加新的特征.
  • 为了表明子类有父类, 要把子类写在父类的签名, 用冒号(:)分隔.

class Bicycle: Vehicle {
    var hasBasket = false
}
3. 重写
  • 子类可以提供它自己的实例方法、类型方法、实例属性, 类型属性或下标脚本的自定义实现, 否则它将会从父类继承. 这就是所谓的重写.
  • 要重写而不是继承一个特征, 你需要在你的重写定义前面加上override关键字. 这样做说明你打算提供一个重写而不是意外提供了一个相同定义. 意外的重写可能导致意想不到的行为, 并且任何没有使用override关键字的重写都会在编译时被诊断错误.

class Vehicle {
    var currentSpeed = 0.0
    var description: String {
        "traveling at \(currentSpeed) miles per hour"
    }
    
    func makeNoise() -> Void {
        
    }
}

class Bicycle: Vehicle {
    var hasBasket = false
    
    override func makeNoise() {
        
    }
}
4. 访问父类的方法、属性和下标脚本
  • 你可以通过使用super前缀访问父类的方法、属性或下标脚本
  • 一个命名为someMethod()的重写方法可以通过super.someMethod() 在重写方法的实现中调用父类版本的someMethod()方法
  • 一个命名为someProperty的重写属性可以通过super.someProperty在重写的gettersetter实现中访问父类版本的someProperty属性
  • 一个命名为someIndex的重写下标脚本开使用super[someIndex]在重写的下标脚本实现中访问父类版本中相同的下标脚本

class Car: Vehicle {
    var gear = 1
    override var description: String {
        super.description + " in gear \(gear)"
    }
}

5. 重写属性的观察器
  • 可以使用属性重写来为继承的属性添加属性观察器. 这就可以让你在继承属性的值改变时得到通知, 无论这个属性最初如何实现.
  • 不能给继承而来的常量存储属性或者只读的计算属性添加属性观察器.这些属性的值不能被设置, 所以提供willSetdidSet实现作为重写的一部分也是不合适的.
  • 不能为同一个属性同时提供重写的setter和重写的属性观察器 如果你想要监听属性值的改变, 并且你已经为那个属性提供了一个自定义的setter, 那么你从自定义的setter里就可以监听任意值的改变.

class AutomaticCar: Car {
    override var currentSpeed: Double {
        didSet {
            gear = Int(currentSpeed / 10.0) + 1
        }
    }
}

let automatic = AutomaticCar()
automatic.currentSpeed = 35.0
print("AaautomaticCar: \(automatic.description)")

相关文章

  • Swift 5.x 类的定义

    1.定义基类 任何不从另一个类继承的类都是所谓的基类 Swift类不会从一个通用基类继承. 你没有指定特定父类的类...

  • Swift 中类的使用

    Swift 中类的使用 主要内容 类的介绍和定义 类的属性 类的构造函数 一. 类的介绍和定义 Swift也是一门...

  • Swift3.x - 类和结构体

    类的介绍和定义 Swift也是一门面向对象的开发语言。 面向对象的基础就是类,类产生对象。 Swift如何定义类:...

  • 接上面的基础语法(Swift中类的使用)

    类的介绍和定义 1.Swift 也是面向对象的语言,面向对象的基础是类,类产生的对象,那么Swift中如何定义类呢...

  • swift方法

    oc中只有类可以定义方法,swift类/结构体/枚举都能定义方法 swift的类型方法类似oc的类方法 实例方法(...

  • Swift学习-类&& 类的构造函数&&

    Swift中类的使用 主要内容 类的介绍和定义 类的属性 类的构造函数 一. 类的介绍和定义 Swift也是一门面...

  • 13-Swift中的类

    一、类的介绍和定义 Swift也是一门面向对象开发的语言,面向对象的基础是类,类产生了对象; 在Swift中定义类...

  • Swift笔记<十>类的基本使用

    类的介绍和定义 Swift也是一门面向对象的开发语言 在Swift中如何定义类呢 类的属性和方法 类的析构函数

  • Swift中类的使用

    一. 类的介绍和定义 Swift也是一门面向对象开发的语言面向对象的基础是类,类产生了对象在Swift中如何定义类...

  • Swift方法

    在 Objective-C 中,类是唯一能定义方法的类型。Swift中类/结构体/枚举都能定义方法。在 Swift...

网友评论

      本文标题:Swift 5.x 类的定义

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