Swift笔记<十四>三大特性

作者: 大基本功 | 来源:发表于2018-02-24 16:13 被阅读32次

和object-c一样swift的三大特性同为封装,继承,多态

封装
继承
  • 重写方法
  • 重载方法
    • 参数名相同,参数个数不同
    • 参数名相同,参数类型不同
     class Person{
     
     func text() {
         print("person")
     }
     
    }
    
    class Stu:Person{
     
     //重写
     //完全覆盖
     override func text() {
         
         print("Stu")
         
     }
     //重载
     func chongzai(a:Int) -> Int {
         
         return a
     }
     //参数个数不同
     func chongzai(a:Int,b:Int) -> Int {
         
         return a+b
     }
     //参数不同-返回值类型不同
     //使用:一定要注意,明确的告诉编译器,拿什么类型的变量接收函数的值,为了确定返回值,让编译器知道要调用那个函数才可以
     
     func chongzai(a:Int) -> Double {
         
         return 0.2
         
     }
     
     func chongzai(a:Double) -> Int {
         
         return 1
         
     }
    
     
     
    }
    
    let s = Stu()
    s.text()
    
    let result:Double = s.chongzai(a: 1)
    let result2:Int = s.chongzai(a: 1)
    
    *当父类继承NSObject时
     //继承nsobject就代表这个类以后有可能被转换oc代码
    class Person :NSObject{
     
     func text() {
         print("person")
     }
     
    }
    
    class Stu:Person{
     
     //重载
     func chongzai(a:Int) -> Int {
         
         return a
     }
     @objc(chongzai:)
     func chongzai(a:Double) -> Int {
         
         return 1
         
     }
    
     //在OC中以上两种函数会被转化成方法
     //- (NSInteger)chongzaiWithA:(NSInteger)a
     //- (NSInteger)chongzaiWithA:(Double)a
     //在OC中不允许参数名相同的方法所以天所以添加@objc修改方法名为chongzai
    }
    
多态
  • 父类指针指向子类,来调用子类方法
  • 多态的前提是继承

相关文章

网友评论

    本文标题:Swift笔记<十四>三大特性

    本文链接:https://www.haomeiwen.com/subject/ceniwxtx.html