美文网首页swift
swift中的继承

swift中的继承

作者: hello_bear | 来源:发表于2017-12-19 09:17 被阅读12次

一个类可以从另一个类继承方法、属性和其他的特性。当一个类从另一个类继承的时候,继承的类就是所谓的子
类,而这个类继承的类被称为父类。在Swift 中,继承与其他类型不同的基础分类行为。

在 Swift 中类可以调用和访问属于它们父类的方法、属性和下标脚本,并且可以提供它们自己重写的方法,属性 和下标脚本来定义或修改它们的行为。Swift 会通过检查重写定义都有一个与之匹配的父类定义来确保你的重写是正确的。

类也可以向继承的属性添加属性观察器,以便在属性的值改变时得到通知。可以添加任何属性监视到属性中,不 管它是被定义为存储还是计算属性。

定义一个基类

任何不从另一个类继承的类都是所谓的基类

没有指定特定父类的类都会以基类的形式创建。

子类

子类是基于现有类创建新类的行为。子类从现有的类继承了一些特征,你可以重新定义它们。你也可以为子类添 加新的特征。

为了表明子类有父类,要把子类写在父类的前面,用冒号分隔:

1   class SomeSubclass: SomeSuperclass {
2       // subclass definition goes here
3   }

子类本身也可以被继承。

重写

子类可以提供它自己的实例方法、类型方法、实例属性,类型属性或下标脚本的自定义实现,否则它将会从父类继承。这就所谓的重写。

要重写而不是继承一个特征,你需要在你的重写定义前面加上 override关键字。

访问父类的方法、属性和下标脚本

你可以通过使用 super前缀访问父类的方法、属性或下标脚本

重写方法

你可以在你的子类中重写一个继承的实例或类型方法来提供定制的或替代的方法实现。

1  class Train: Vehicle {
2      override func makeNoise() {
3           print("Choo Choo")
4      } 
5  }

重写属性

你可以重写一个继承的实例或类型属性来为你自己的属性提供你自己自定义的 getter 和 setter ,或者添加属性观 察器确保当底层属性值改变时来监听重写的属性。

重写属性的getter和setter

你可以通过在你的子类重写里为继承而来的只读属性添加Getter和Setter来把它用作可读写属性。总之,你不能把 一个继承而来的可读写属性表示为只读属性。

重写属性观察器

你可以使用属性重写来为继承的属性添加属性观察器。
注意:

你不能给继承而来的常量存储属性或者只读的计算属性添加属性观察器。这些属性的值不能被设
置,所以提供 willSet 或 didSet 实现作为重写的一部分也是不合适的。

也要注意你不能为同一个属性同时提供重写的setter和重写的属性观察器。如果你想要监听属性值 的改变,并且你已经为那个属性提供了一个自定义的setter,那么你从自定义的setter里就可以监听

阻止重写

你可以通过标记为终点来阻止一个方法、属性或者下标脚本被重写。通过在方法、属性或者下标脚本的关键字前
final 修饰符(比如 final var , final func , final class func , fianl subscript )。

相关文章

  • 类继承

    继承是面向对象的重要特征之一。swift中的继承只能发生在类上,结构体和枚举不能继承。在swift中,一个类继承另...

  • swift方法参数遵守多继承和遵守多个协议

    参数继承协议 OC中 id Swift 3 protocol Swift 4 A & B 文档

  • swift中的继承

    一个类可以从另一个类继承方法、属性和其他的特性。当一个类从另一个类继承的时候,继承的类就是所谓的子类,而这个类继承...

  • Swift 中的继承

    继承方法、属性、其他特征(比如,下标)。还可以为继承来的属性添加属性观察器。 重写 子类可以提供自定义实现,包括,...

  • swift中的继承

    只有类支持继承 重写实例方法、下标 重写类型方法、下标 用class修饰的可以被重写 重写属性 1.重写实例属性 ...

  • 运行时加载属性列表、Swift4中的 @objcMembers

    原因:@objcMembers 在Swift 4中继承 NSObject 的 swift class 不再默认全部...

  • 密码输入页面的实现-模仿支付宝

    github代码库地址 涉及知识点总结: swift类的继承 swift中权限控制 swift中的懒加载 swif...

  • OC&Swift runtime 一 Classes

    在Swift 4中继承 NSObject 的 swift class 不再默认全部 bridge 到 OC,如果我...

  • Swift 遇到的坑

    在swift中字典转模型,创建的model 继承自 NSObject,如果是swift 3 ,则在模型中创建属性不...

  • Swift--AnyObject初步探索

    Swift 日常笔记碎片知识 在Swift中AnyObject对应OC中的id,用于保存对象类型,因此继承与NSO...

网友评论

    本文标题:swift中的继承

    本文链接:https://www.haomeiwen.com/subject/nonmwxtx.html