swift继承

一个类可以继承另一个类的方法,属性和其它特性。当一个类继承其它类时,继承类叫子类,被继承类叫超类(或父类)。在 Swift 中,继承是区分「类」与其它类型的一个基本特征。
不继承于其它类的类,称之为基类。

//animal是一个基类,定义了一个name属性和有参有返回值eating方法
class Animal {
    var name : String?
    func eating(food:String) -> String {
        return name! + "吃" + food
    }
}

var dog = Animal()
dog.name = "狗"
print("\(dog.eating(food: "屎嘛?"))")

//继承animal
class Dog : Animal {
    var age = 5
}

var husky = Dog()
//引用子类的属性和方法
husky.name = "哈士奇"
print("\(husky.eating(food: "枕头"))")

//重写,子类可以为继承来的实例方法,类方法,实例属性,或下标提供自己定制的实现。我们把这种行为叫重写。
//如果要重写某个特性,你需要在重写定义的前面加上override关键字。这么做,你就表明了你是想提供一个重写版本,而非错误地提供了一个相同的定义。意外的重写行为可能会导致不可预知的错误,任何缺少override关键字的重写都会在编译时被诊断为错误。
//override关键字会提醒 Swift 编译器去检查该类的超类(或其中一个父类)是否有匹配重写版本的声明。这个检查可以确保你的重写定义是正确的。

class Cat : Animal {
    // 重写eating方法
    override func eating(food: String) -> String {
        return "别说了,我吃猫粮"
    }
}

var cat = Cat()
cat.name = "小猫咪"
print("\(cat.eating(food: "xxx"))")

//防止重写。你可以通过把方法,属性或下标标记为final来防止它们被重写,只需要在声明关键字前加上final修饰符即可(例如:final var,final func)

输出
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 继承我们可以理解为一个类获取了另外一个类的方法和属性。 当一个类继承其它类时,继承类叫子类,被继承类叫超类(或父类...
    零度_不结冰阅读 303评论 0 0
  •  一个类可以继承另外一个类的方法、属性和其他特性。当一个类继承其他类时,继承类叫子类,被继承类叫父类。 在swif...
    EndEvent阅读 923评论 3 3
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,282评论 4 61
  • 首先,在 Github 上把源码下载下来,地址是:XMPPFramework源码地址,进入wiki,里面介绍了 x...
    走在路上的小二阅读 2,676评论 0 6
  • 祈新年,送旧年,稚子嬉嬉盼过年。欢欣胜去年。 迎新年,贺新年,却笑浮生又一年。举杯莫计年。
    圓月阅读 527评论 3 2