覆盖function

我正在一所着名大学提供在线iOS课程。 我不明白为什么以下代码使用override并且它是合法的。

  1. 根据官方定义,我们使用override来覆盖超类的方法。 以下代码中的子类和超类在哪里?

  2. 什么被覆盖和什么?

 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类中,有一个函数walkoverride 。 那是因为它是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()方法。

什么被覆盖和什么?

该物业的实施正在被覆盖。 具有实现的类执行覆盖。