覆盖function
我正在一所着名大学提供在线iOS课程。 我不明白为什么以下代码使用override
并且它是合法的。
-
根据官方定义,我们使用
override
来覆盖超类的方法。 以下代码中的子类和超类在哪里? -
什么被覆盖和什么?
public override var description: String { return "\(url.absoluteString) (aspect ratio = \(aspectRatio))" }
这是一个例子:
你原来的课程:
class Person { func walk() { //do something } }
你的子类:
class Runner: Person { override func walk() { //do something that is different from Person's walk } }
在Runner
类中,有一个函数walk
的override
。 那是因为它是Person
的子类,它可以覆盖Person的walk函数。 所以如果你实例化一个Runner
:
var usainBolt = Runner()
你调用walk
函数:
usainBolt.walk()
然后,它将调用您在Runner
类中编写的overriden函数。 如果不覆盖它,它将调用您在Person
编写的walk
函数。
根据官方定义,我们使用override来覆盖超类的方法。
那是对的。 示例中的超类是包含description
属性覆盖的类。 这可能是NSObject
,从它(直接或间接)派生的一些其他类,或者与NSObject
无关的一些具有var description: String
属性的类。
description
是Swift类通常具有的一种属性,可以将自身表示为字符串,因为description
提供了对CustomStringConvertible
协议的一致性。 这类似于Java的toString()
方法和Python的str()
方法。
什么被覆盖和什么?
该物业的实施正在被覆盖。 具有实现的类执行覆盖。