swift语言 继承和扩展

来源:互联网 发布:相亲遇到的奇葩 知乎 编辑:程序博客网 时间:2024/06/06 02:06

参考来源:小波说雨燕

//父类

class {

   var 速度 = 0

   var 描述 :String {

       return "时速\(速度)公里每小时"

    }

    

   func 声响() {

        

    }

}


let一辆车 = ()

一辆车.描述

一辆车.声响()

/**

*  func 声响()表示车类中有这样一个方法,与oc中的实例方法类似

   调用时,一辆车.声响()

*/



//子类继承父类

class自行车: {

   var 有篮子 = false

}


let一辆自行车 = 自行车()

一辆自行车.有篮子 =true


一辆自行车.速度 =25

一辆自行车.描述


//子类的子类

finalclass 情侣自行车: 自行车 {

   var 当前乘客数 = 0

}


let一辆情侣自行车 = 情侣自行车()

一辆情侣自行车.当前乘客数 =2

一辆情侣自行车.速度 =20

一辆情侣自行车.描述



//子类重载父类的方法

//override 告诉你说下面这个方法是从父类/接口继承过来的,需要你重写一次

class动车: {

   override func声响() {

        println("------")

    }


}

let一辆动车 = 动车()


一辆动车.声响()//调用了方法声响() 运行后将会输出------




//子类重载父类的计算属性

class汽车: {

   var 轮子数 = 0


   override var描述 :String {

       return super.描述 +",\(轮子数)个轮子"

    }


   override var速度 :Int {

       didSet {

           if 速度 > 120 {

                println("警告:您的速度已经超过120公里每小时,为了您的安全,进入自动驾驶状态.")

            }

        }

    }


}



let一辆汽车 = 汽车()


println(一辆动车.描述)


一辆汽车.速度 =121

一辆汽车.轮子数 =4

一辆汽车.描述


/**

对象中的变量可以直接拿过来使用

*/

println("you" +一辆汽车.描述)


//扩展

//--已存在的类/结构体/枚举类型,通常用于

//1.源代码不可知的情况

//2.把复杂的类分解,提高可维护性


extension Double {

   var rmb: Double {

       return self *0.0597

    }

}

//日本人均月薪314150日元

31_4150.rmb



//整数自行平方

extension Int {

   mutating func平方() {

       self *= self

    }

}


var一个整数 = 999

一个整数.平方()

一个整数


0 0