Swift 面向對象解析(二) Swift 2.2 多態和強制轉換

 接着上面一篇說的內容:html

 

 一 繼承swift

     蘋果繼承與水果,蘋果是水果的子類,則蘋果是一種特殊的水果;這就是繼承的關係,這個咱們學OC的時候相信也都理解了,就再也不描述定義了,下面的就叫繼承:ide

class ZXMessageCell: UITableViewCell {    

    // 自定義的cell繼承與UITableviewCell 

}

     繼承了父類,你也就能使用父類的屬性方法,這些咱們學OC的時候也都清楚。看下面幾點,post

     1:重寫父類的方法學習

     2:重寫父類的屬性ui

     3:重寫屬性觀察者    上面的 1 2 3 只要記住一點,在重寫的方法,屬性,觀察者等等前面添加 override 就能夠   具體的例子 Swift繼承url

    4:防止重寫  final 關鍵字能夠用於修飾 類、屬性、方法、下標。使用 final 修飾的類不能被繼承,派生子類,使用 final 修飾的屬性不能被重寫,使用 final 修飾的方法、下標不能被重寫。spa

 

二:類的構造與析構.net

       因爲類的繼承,子類不只包括了本身定義的存儲屬性,還包括從父類繼承獲得的存儲屬性,類的全部存儲屬性,包括全部的繼承父類的屬性,在構造的過程當中必須設置初始值,所以類的構造過程相對的比較複雜。代理

       與構造器相反的是,Swift 容許爲類(枚舉,結構體不容許)定義析構器,在實例銷燬以前,系統就會自動的調用該實例的析構器。 

       說實話,就單單這一部分的內容,要說清楚裏面的原理,可能得寫一本書啦。。固然這書也確定不是我寫,沒那能力,畢竟菜。哈哈~

       下面給你們的學習連接,但願給你們有幫助:

       Swift的構造和析構過程

      Swift 構造過程+析構過程(十三)

      Swift的構造過程

 

三:多態

     Swift引用變量有兩個類型,一個是編譯時類型,一個是運行時類型。編譯時類型由聲明該變量時使用的類型決定,編譯器只認每一個變量的編譯時的類型;運行時類型由實際賦給該變量的實例決定,若是編譯時的類型和運行時的類型不一致,就可能出現所謂的多態(Polymorphism)

      上面是多態的概念,它的使用和例子我之前總結寫過,把之前博客的連接給你們。

     Swift 2.2 多態和強制轉換

 

四:嵌套

     這個就一句話帶過了,在Swift中容許在一個類型的內部去嵌套定義另外一個類型。

 

五:擴展

       這是個重點,擴展就像咱們OC中用的類別或者說分類同樣,都是同一個東西,但Swift的擴展功能要去強大的多。先把擴展提供的功能列舉出來;

        1:添加類型存儲屬性

        2:添加實例計算屬性和類型計算屬性

        3:添加實例方法和類型方法

        4:添加新的構造器,並且新添加的構造器不影響原來的構造器

        5:添加下標

        6:定義和使用新的嵌套類型

        7:是一個已有類型遵照一個或者多個協議

        順便提一下拓展的建立方法,其實挺簡單的,就是新建一個.Swift文件就OK了,還有之前咱們在OC中使用的PCH文件,也是能夠用這個.Swift文件代替了的。你在這個.Swift文件當中定義了的常量和OC中PCH頭文件的功能是徹底同樣的。

       看下面的代碼例子,下面是給UIView擴展了兩個方法:

// MARK: - UIView的擴展方法
extension UIView{
    
    func containsSubView(subView:UIView) -> Bool {
        
        for view in self.subviews {
            
            if view .isEqual(subView) {
                
                return true
            }  
        }
        return false
    }
   
    func containsSubViewOfClassType(aClass:AnyClass) -> Bool {
        
        for view in self.subviews {
            
            if view .isMemberOfClass(aClass) {
                
                return true
            }
        }    
        return  false
     }
 } 

     下面是給你們的學習連接,都寫的很不錯,都有做者的大把心血在裏面的,致敬!

       Swift學習筆記(十一)--拓展和協議

      Swift協議和擴展

 

六  協議:

       Swift 的協議的做用相似於 OC中的協議,其實OC的協議你理解的話,這裏也就沒多少須要在強加去解釋的。協議的基本的用法我之前的博客當中也有說過  Swift 2.2 協議和代理      

         順便指出,可選協議這一點,其實也挺簡單的,你在這些屬性、方法、下標等想讓它是可選的,讓它加上 optional 這個關鍵字就好了。可選的,看字面意思你們也可想而知了,並不必定是遵照了這個協議以後必需要實現的方法和屬性就叫可選的。

 

七:封裝

        封裝是面向對象的額三大特性之一,兩外兩個是繼承和多態。它指的是將實例的狀態信息,實現細節隱藏在實例內部,不容許外部程序直接訪問實例的內部信息,只能經過該類型所提供的公開的方法來訪問和操做實例的內部信息。

相關文章
相關標籤/搜索