日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Swift教程之继承

發(fā)布時(shí)間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Swift教程之继承 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

繼承

類可以從另一個(gè)類繼承方法、屬性和其他特性,繼承類稱為子類,被繼承類為其超類。Swift的類可以調(diào)用和訪問超類的方法、屬性和下標(biāo),并能重寫這些版本以改進(jìn)或修改其行為。

類還可以將屬性觀察器添加到繼承的屬性,屬性觀察器可以添加到任何屬性。


定義基類

基類是不繼承任何一個(gè)類的類。

注意

Swift類不會(huì)從通用基類繼承,未指定超類的自定義類自動(dòng)成為基類。

以下為一個(gè)自定義Vehicle基類:

class Vehicle {var currentSpeed = 0.0var description: String {return "traveling at \(currentSpeed) miles per hour"}func makeNoise() {// do nothing - an arbitrary vehicle doesn't necessarily make a noise} }

使用初始化器語(yǔ)法創(chuàng)建一個(gè)類實(shí)例:

let someVehicle = Vehicle()

訪問其description屬性:

print("Vehicle: \(someVehicle.description)") // Vehicle: traveling at 0.0 miles per hour


子類化

子類化是將一個(gè)新類置于現(xiàn)有類之上的行為,子類繼承現(xiàn)有類的特性,也可以向子類添加新特性。

繼承語(yǔ)法如下:

class SomeSubclass: SomeSuperclass {// subclass definition goes here }

子類化Vehicle類:

class Bicycle: Vehicle {var hasBasket = false }let bicycle = Bicycle() bicycle.hasBasket = truebicycle.currentSpeed = 15.0 print("Bicycle: \(bicycle.description)") // Bicycle: traveling at 15.0 miles per hour

子類繼續(xù)子類化:

class Tandem: Bicycle {var currentNumberOfPassengers = 0 }let tandem = Tandem() tandem.hasBasket = true tandem.currentNumberOfPassengers = 2 tandem.currentSpeed = 22.0 print("Tandem: \(tandem.description)") // Tandem: traveling at 22.0 miles per hour


重寫

子類可以提供自定義的從超類繼承來的實(shí)例方法、類型方法、實(shí)例屬性、類型屬性或下標(biāo),稱為重寫。

使用override關(guān)鍵字重寫超類的特性,沒有關(guān)鍵字的任何重寫會(huì)導(dǎo)致編譯錯(cuò)誤。

訪問超類方法、屬性和下標(biāo)

當(dāng)子類重寫方法、屬性或下標(biāo)時(shí),可以將現(xiàn)有超類的實(shí)現(xiàn)用作重寫的一部分,即在超類實(shí)現(xiàn)基礎(chǔ)上重寫。這時(shí)使用super前綴訪問方法、屬性或下標(biāo)的超類版本:

  • 名為someMethod()的重寫方法可以通過在重寫方法實(shí)現(xiàn)中調(diào)用super.someMetho()來調(diào)用someMethod()的超類版本。

  • 被稱為someProperty的被覆蓋的屬性可以在超級(jí)的gettersetter實(shí)現(xiàn)中以super.someProperty方式訪問someProperty的超類版本。

  • someIndex的覆蓋下標(biāo)可以從覆蓋的下標(biāo)實(shí)現(xiàn)中訪問與super [someIndex]相同的下標(biāo)的超類版本。

方法重寫

可以重寫繼承的實(shí)例或類型方法來提供子類中定制或替代方法的方法。

class Train: Vehicle {override func makeNoise() {print("Choo Choo")} }let train = Train() train.makeNoise() // Prints "Choo Choo"

屬性重寫

可以重寫繼承的實(shí)例或類型屬性,為該屬性提供自定義gettersetter,或添加屬性觀察器以啟用重寫屬性來觀察底層屬性值何時(shí)更改。

getter和setter屬性重寫

可以提供自定義的getter(和setter)來覆蓋任何繼承的屬性,必須始終聲明要覆蓋的屬性名和類型,以便編譯器檢查重寫是否與具有同名同類型的超類屬性匹配。

可以為超類的只讀屬性的重寫同時(shí)提供gettersetter修改為讀寫屬性,但不能將超類的讀寫屬性重寫為只讀屬性。

注意

當(dāng)重寫屬性提供了setter時(shí),還必須提供getter。若不想覆蓋getter修改繼承屬性的值,可以從getter中返回super.someProperty以維持超類屬性的getter實(shí)現(xiàn)。

以下為子類重寫超類description屬性并在超類實(shí)現(xiàn)基礎(chǔ)上添加新功能:

class Car: Vehicle {var gear = 1override var description: String {return super.description + " in gear \(gear)"} }let car = Car() car.currentSpeed = 25.0 car.gear = 3 print("Car: \(car.description)") // Car: traveling at 25.0 miles per hour in gear 3

屬性觀察器重寫

重寫屬性會(huì)講超類的屬性觀察器添加到繼承的屬性,不論該屬性的實(shí)現(xiàn)方法如何都將能夠在繼承屬性的值更改時(shí)收到通知。

注意

不能將屬性觀察器添加到繼承的常量存儲(chǔ)型屬性或只讀計(jì)算型屬性,因?yàn)檫@些屬性值不能更改。不能為同一屬性同時(shí)提供重寫的setter和重寫的屬性觀察器,若要監(jiān)聽屬性值的更改,并且已經(jīng)提供重寫的setter,則可以簡(jiǎn)單地監(jiān)聽重寫的setter中任何值的更改。

class AutomaticCar: Car {override var currentSpeed: Double {didSet {gear = Int(currentSpeed / 10.0) + 1}} }let automatic = AutomaticCar() automatic.currentSpeed = 35.0 print("AutomaticCar: \(automatic.description)") // AutomaticCar: traveling at 35.0 miles per hour in gear 4


防止重寫

通過將方法、屬性或下標(biāo)標(biāo)記為final防止被子類重寫,如final varfinal funcfinal class funfinal subscript

任何試圖在子類中重寫標(biāo)記為final的方法、屬性或下標(biāo)都將報(bào)告編譯錯(cuò)誤,也可以在擴(kuò)展中使用final關(guān)鍵字。

可以在類定義中的class關(guān)鍵字之前添加final修飾符防止該類被子類化,任何試圖子類化標(biāo)記為final的類都將報(bào)告編譯錯(cuò)誤。

轉(zhuǎn)載于:https://www.cnblogs.com/keqipu/p/7627219.html

總結(jié)

以上是生活随笔為你收集整理的Swift教程之继承的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成年人在线观看 | 美女国产视频 | 亚洲欧美日韩精品久久 | eeuss一区二区 | 羞羞在线观看 | 日本亚洲天堂 | 成人羞羞国产免费动态 | 欧美色射 | 2018天天操 | 亚洲骚片 | 97自拍偷拍 | 三级在线观看网站 | 香蕉视频污视频 | 一本色道久久综合精品婷婷 | 精品国产一区二区三区久久狼黑人 | 91麻豆免费看| 手机av片| yw视频在线观看 | 色中色在线视频 | 久久精品视频日本 | 国产一区二区麻豆 | 少妇免费毛片久久久久久久久 | 少妇爽| 日韩欧美综合 | 午夜两性网 | 中文字幕狠狠干 | 国产手机av| 婷婷伊人综合 | 免费观看一级视频 | 久久久久久久久久久久久av | 禁漫天堂在线 | 自拍偷拍日韩精品 | 凹凸精品熟女在线观看 | 亚洲xx网 | 精品一区二区三区在线播放 | 中国浓毛少妇毛茸茸 | 制服丝袜天堂 | av爱爱| 都市激情第一页 | 欧美性白人极品1819hd | 国产成人精品无码播放 | 亚洲观看黄色网 | 免费一级肉体全黄毛片 | 91免费观看网站 | 亚洲一区二区三区四 | 成人免费看片98欧美 | 国产精品刺激 | 玖玖在线资源 | 亚洲av无码成人精品区 | 成人ay | 天天躁日日躁狠狠很躁 | 777奇米视频 | 久久久久色 | 7777精品视频 | 成了校长的性脔h文 | 亚洲成人中文字幕 | 国产又粗又长 | 国产网址| 天堂在线免费视频 | 嫩草午夜少妇在线影视 | 96精品视频在线观看 | 天堂va蜜桃一区二区三区漫画版 | 日韩免费视频一区二区视频在线观看 | 在线精品小视频 | 吖v在线| 久久不卡免费视频 | 99久久99久久精品国产片桃花 | 成年人网站黄 | 久久精品aⅴ无码中文字字幕重口 | 亚洲乱人伦| 国产免费激情 | 麻豆日产六区 | 99热这里都是精品 | 欧美一级二级在线观看 | 黄色av网站在线 | 国内精品福利视频 | 俺来也av| av色欲无码人妻中文字幕 | 全黄性高潮 | 中文字幕亚洲欧美日韩在线不卡 | 亚洲精品免费看 | 亚洲无码久久久久久久 | a猛片免费播放 | 亚洲一区二区在线视频 | 亚洲成人免费网站 | 欧美黄色一区二区三区 | 亚洲视频播放 | 都市激情亚洲一区 | 天天做天天摸天天爽天天爱 | 综合网中文字幕 | 欧美电影一区二区三区 | 嫩草在线观看 | 星空无限mv国产剧入选 | 一级毛片黄片 | 黄色三级免费观看 | 777av| 日剧再来一次第十集 | 秋霞成人av | 中文字幕在线播放一区二区 |