关闭

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

146人阅读 评论(0) 收藏 举报
分类:

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

从定义一个类开始

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
    }


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15309次
    • 积分:678
    • 等级:
    • 排名:千里之外
    • 原创:55篇
    • 转载:11篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论
    D
    我要啦免费统计