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