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 这个关键字就好了。可选的,看字面意思你们也可想而知了,并不必定是遵照了这个协议以后必需要实现的方法和属性就叫可选的。

 

七:封装

        封装是面向对象的额三大特性之一,两外两个是继承和多态。它指的是将实例的状态信息,实现细节隐藏在实例内部,不容许外部程序直接访问实例的内部信息,只能经过该类型所提供的公开的方法来访问和操做实例的内部信息。

相关文章
相关标签/搜索