一个类可以继承另一个类的方法,属性和其他特特性,继承类叫子类,被继承叫父类,Swift中,类可以调用和访问父类的方法,属性和附属脚本,并且可以重写来修改他们的行为
1.定义基类 (Base class) 不继承与其他类的类,称为基类
[objc] view plain copy classVehicle{ varnumberOfWheels:Int varmaxPassengers:Int funcdescription()->String{ return"\(numberOfWheels)wheels;upto\(maxPassengers)passengers" } init(){ numberOfWheels=0 maxPassengers=1 } 构造器的最简形式就像一个没有参数的实例方法,使用init关键字
init(){ //performsomeinitializationhere }
2.子类 将父类写在子类的后面,用冒号分隔
classSomeClass:SomeSuperclass{ //classdeFinitiongoeshere } //Bicycle继承了Vehicle的属性和方法 Bicycle:Vehicle{ init(){ super.init() numberOfWheels=2 letbicycle=Bicycle() println("Bicycle:\(bicycle.description())") //Bicycle:2wheels;upto1passengers //子类可以继续被其他类继承 Tandem:Bicycle{ super.init() maxPassengers=2 }
3.重写 子类为继承来的实例方法,类方法,实例属性或附属脚本提供自己定制的实现,称为重写
需要在前面加上 override 关键字标明是要提供一个重写版本而非提供一个相同的定义,override提醒Swift去检查该类的父类是否有匹配的方法,可保证重写定义是正确的
访问父类的方法,属性及附属脚本
使用super前缀
方法: super.someMethod()
属性: super.someProperty
附属脚本: super[someIndex]
3.1重写方法 Car:Vehicle{ speed:Double=0.0 maxPassengers=5 numberOfWheels=4 overrIDefuncdescription()->String{ returnsuper.description()+";" +"travelingat\(speed)mph" letcar=Car() println("Car:\(car.description())") //Car:4wheels;upto5passengers;travelingat0.0mph
3.2重写属性 重写属性的时候,必须把名字和类型都写出来,让编译器检查重写的属性是否与父类匹配
//min函数是Swift标准库中的一个全局函数,接收两个或多个参数,返回最小的那个 SpeedlimitedCar:Car{ overrIDevarspeed:Double{ get{ super.speed set{ super.speed=min(newValue,40.0) letlimitedCar=SpeedlimitedCar() limitedCar.speed=60.0 println("SpeedlimitedCar:\(limitedCar.description())") //SpeedlimitedCar:4wheels;upto5passengers;travelingat40.0mph
3.3重写属性监视器 可以在属性中重写为一个继承来得属性添加属性监听器,当继承的属性值发生变化,就会被通知
automaticCar:Car{ vargear=1 dIDSet{ gear=Int(speed/10.0)+1 super.description()+"ingear\(gear)" letautomatic=automaticCar() automatic.speed=35.0 println("automaticCar:\(automatic.description())") //automaticCar:4wheels;upto5passengers;travelingat35.0mphingear4
3.4防止重写 使用 @final 来防止被子类重写( @final var,@final func,@final class func,@final subscript) 总结
以上是内存溢出为你收集整理的Swift 继承(十二)全部内容,希望文章能够帮你解决Swift 继承(十二)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)