Swift基础语法: 30 - Swift的基类, 子类, 重写, 重写方法, 重写属性, 防止重写

Swift基础语法: 30 - Swift的基类, 子类, 重写, 重写方法, 重写属性, 防止重写,第1张

概述前面我们讲了有关于脚本语法的基本认识以及使用, 现在让我们来看看Swift的其他东西: 1.基类 所谓的基类, 就是OC中的父类, 不继承任何类, 就叫做基类, 让我们来看看例子: class Vehicle { var currentSpeed = 0.0 var description: String { return "traveling at \(curre

前面我们讲了有关于脚本语法的基本认识以及使用,现在让我们来看看Swift的其他东西:

1.基类

所谓的基类,就是OC中的父类,不继承任何类,就叫做基类,让我们来看看例子:

class Vehicle {    var currentSpeed = 0.0    var description: String {        return "traveling at \(currentSpeed) miles per hour"    }    func makeNoise() {    }}let someVehicle = Vehicle()println("someVehicle: \(someVehicle.description)")// 打印出来的结果: someVehicle: traveling at 0.0 miles per hour

PS: 这个类虽然是没有什么意义,但它的的确确是一个基类,在Swift中,如果你没有在这个类名后面继承与什么什么类,那么就会自动的变成基类.

2.子类生成

所谓的子类,其实和OC中的子类一样的,它是基于基类所新建的一个类,这个类就叫做子类,它拥有父类的所有特性,同时它又可以有属于自己的特性,下面让我们来看看例子:

class Bicycle: Vehicle {    var hasBasket = false}let bicycle = Bicycle()bicycle.hasBasket = truebicycle.currentSpeed = 15println("bicycle: \(bicycle.description)")// 打印出来的结果: bicycle: traveling at 15.0 miles per hour

PS: 上面的例子就是Vehicle类的子类,它继承与Vehicle的所有特性,可以调用Vehicle类里面的变量,方法,等等,同时它又有自己的属性.

3.重写方法

在子类中,虽然拥有父类的所有特性,但在实际开发中,有一些特殊的情况,父类的方法不能满足于子类的需求,但我们又不想去更改父类的方法,那么我们可以选在在子类里去重写父类的方法,比如:

class Car: Vehicle {    var gear = 1    overrIDe var description: String {        return super.description + " in gear \(gear)"    }}let car = Car()car.currentSpeed = 25.0car.gear = 3println("Car: \(car.description)")// 打印出来的结果: Car: traveling at 25.0 miles per hour in gear 3

PS: 没错,有些眼睛犀利的朋友就看到了,在Car这个子类里,有一个方法名和父类的方法名是一样的,但在这个方法名前面,加了一个overrIDe这个关键字,这个就是Swift中的重写关键字.

4.重写属性

在Swift中,既然能重写父类的方法,那当然也是可以重写父类的属性了,让我们来看看例子:

class SpeedlimitedCar: Car {    overrIDe var gear: Int {        get {            return super.gear        }        set {            super.gear = 2        }    }}let limitedCar = SpeedlimitedCar()limitedCar.gear = 60println("SpeedlimitedCar: \(limitedCar.gear)")// 打印出来的结果: SpeedlimitedCar: 2

PS: 这里需要注意一点的就是,必须通过get和set这种特性的方式来重写父类的属性.

5.防止重写

在上面的例子中,如果我有某个类的属性或者方法不想被重写,只要在基类定义的时候在前面加一个final关键字就可以防止被重写,下面让我们来看看例子:

class Car: Vehicle {    final var gear = 0    final overrIDe var description: String {        return super.description + " in gear \(gear)"    }}class SpeedlimitedCar: Car {    overrIDe var description: String {        return "重写了"    }    overrIDe var gear: Int {        get {            return super.gear        }        set {            super.gear = 2        }    }}// 报错: Var overrIDes a 'final' var

好了,这次我们就讲到这里,下次我们继续~

总结

以上是内存溢出为你收集整理的Swift基础语法: 30 - Swift的基类, 子类, 重写, 重写方法, 重写属性, 防止重写全部内容,希望文章能够帮你解决Swift基础语法: 30 - Swift的基类, 子类, 重写, 重写方法, 重写属性, 防止重写所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1088530.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存