从零开始自学Swift(八)

继承情况下子类的构造函数

/*继承*/
class MacBook{
    var price:Double
    var color:String
    init(price:Double,color:String){
        self.price=price
        self.color=color
    }
}

class MacBookAir : MacBook{
    var weight:Double
    init(weight:Double){
        //必须初始化子类的所有属性
        self.weight=weight
        //在构造函数的结尾必须调用super.init调用父类的构造方法
        super.init(price: 12, color:"red")
    }
}
//不能调用父类的构造函数
var oneMacBookAir=MacBookAir(weight: 12.4)

子类重写父类的构造函数

/*继承*/
class MacBook{
    var price:Double
    var color:String
    init(price:Double,color:String){
        self.price=price
        self.color=color
        //在子类初始化的时候,这句话必定被调用
        print("这是父类的构造函数")
    }
}

class MacBookAir : MacBook{
    var weight:Double?
    init(weight:Double){
        //必须初始化子类的所有属性
        self.weight=weight
        //在构造函数的结尾必须调用super.init调用父类的构造方法
        super.init(price: 12, color:"red")
    }
    override init(price: Double, color: String) {
        print("父类的构造函数已被重写")
        self.weight=nil
        //即使重写了父类的构造函数仍然需要在构造函数的结尾调用super .init
        super.init(price: price, color: color)
    }
    func toString(){
    print("价格为:\(price),颜色为:\(color),重量为:\(weight)")
    }
}
var twoMacBookAir=MacBookAir(price: 13, color: "white")
twoMacBookAir.toString()//价格为:13.0,颜色为:white,重量为:nil
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值