Checklists学习日志之父类、子类、继承、重写

看教程里面各种陌生的代码污七糟八,想搞清楚几个概念,父类、子类、继承和重写

从定义一个类开始

class Vehicle
{
    var numberOfWheels: Int
    var maxPassengers: Int
    func description() -> String
    {
        return "\(numberOfWheels) wheels; up to \(maxPassengers) passengers."
    }
    init ()
    {
        numberOfWheels = 0
        maxPassengers = 1
    }
}

定义了一个类Vehicle,用init完成初始化(init函数比较特殊,前面没有func)。然后捏,我们想再定义一个类,这个类和之前的类有很多性质相同。但是我们不想再重新写了。该肿么办捏。我们可以这样:

class Bicycle: Vehicle
{
    override init ()
        
    {
        super.init()
        numberOfWheels = 2
    }
}
let bicycle = Bicycle()
print("Bicycle: \(bicycle.description())")

这里,我们用

class Bicycle: Vehicle

表明,新定义的Bicycle类和Vehicle类差不多。这里,Bicycle就是Vehicle的子类。相应的,Vehicle是Bicycle的父类。但是有一个问题,虽然差不多,但还是差一点,我们应该怎么做呢?比如这里,我们需要Bicycle类初始化时,numberOfWheels=2。好,我们需要对init进行改动。怎么改呢

    override init ()
        
    {
        super.init()
        numberOfWheels = 2
    }

这里,我们重写了init()。对,这就是重写override的意思。

同理,其它我们在父类定义的函数,也可以在子类中重写。比如,在父类中定义函数

    <pre name="code" class="objc">func initxcc ()
    {
        numberOfWheels = 10
        maxPassengers = 10
    }



我们可以在子类中重写

    func initxcc ()
    {
        numberOfWheels = 100
        maxPassengers = 100
    }


阅读更多
个人分类: 学习iOS
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭