swift 物件型別轉換

2021-07-07 02:05:54 字數 1759 閱讀 2249

swift 中物件是可以轉換的,因為物件導向就會涉及繼承,子類,父類等等

有幾點規則我們先說一下

子類物件可以直接轉換為父類物件的

父類物件可以有條件的轉換為子類物件,這個我們下邊在講

首先我們建立三個類  人 homan  男人 man  男孩 boy

man 繼承 homan 

boy 繼承 homan

那麼,就可說  man 是 homan 的子類 

boy 是 homan的子類

homan  是 man的父類

homan 是 boy的父類

[objc]view plain

copy

class

homan  

//自我介紹

func introduce()  

}  

[objc]view plain

copy

class

man:homan   

}  

[objc]view plain

copy

class

boy:homan   

}  

首先我們看 子類轉為父類

[objc]view plain

copy

//1,子類物件可以直接轉換成父類物件(向上轉型,直接轉)

varh

:homan=man(homanname: 

"張三"

)  h.introduce

()  

varh1

:homan=boy(homanname: 

"小馬"

)  h1

.introduce

()  

接下來 我們講父類轉為子類

[objc]view plain

copy

//2,父類物件轉為子類物件 as!   as?

//父類物件轉換為子類物件 需要使用as!(如果當前物件是父類物件,但是他如果是子類物件轉化過來的,那麼可以轉化回去

var man1

=h as! man  

man1

.workname

="ios 開發"

man1

.introduce

()  

//如果要轉化為子類物件,但是當前物件並不是這個子類物件轉化過來的,那麼會出現執行時錯誤:could not cast value of type

//        var man2=h1 as! man

//如果我們需要將當前父類物件轉為子類物件但是並不確定 當前物件是否為子類物件轉化過來的,該如何處理? swift為我們提供乙個方法 as?

iflet a = h as? manelse

iflet a = h

1as? manelse  

還有一種情況是 不知道當前物件是否為子類物件轉為父類物件的

[objc]view plain

copy

//3 如何判斷某乙個物件是不是這個類的物件 可以 使用 物件 is 類 來判斷

//我們會發現判斷子類物件是不是父類物件返回也是true

println(h is homan)  

println(h is man)  

println(h is boy)

Swift 型別轉換

import uikit 1.定義基類 mediaitem 2.定義子類 movie 3.定義子類 song class mediaitem class movie mediaitem class song mediaitem let library movie name movie1 direct...

Swift 學習筆記 型別轉換

1 子類的物件賦值為基類 原型類 class entity func showtag 人物類 class hero entity 怪物類 class monster entity var hero entity hero entityname 火女 hero.showtag var monster ...

Swift程式設計十九(型別轉換)

型別轉換是一種檢查例項型別的方法,或者將該例項視為與其自己的類層次結構中的其他位置不同的超類或子類。swift中的型別轉換是使用is和as運算子實現的。這兩個運算子提供了一種簡單而富有表現力的方法來檢查值的型別或將值轉換為其他型別。還可以使用型別轉換來檢查型別是否符合協議,如檢查協議一致性中所述。可...