为什么我不能在swift中继承多个类,就像它的库类一样

T.K*_*Kul 34 swift

我尝试通过从两个类继承来创建myPet,但错误例如:

import UIKit
class SecondViewController: UIViewController, UITextFieldDelegate {
    // No Error
}
Run Code Online (Sandbox Code Playgroud)

然后定义了以下类,然后创建新类myPets,我喜欢继承Dog和Substance.但是错误:类'Dog'和'Substance'的多重继承

class Dog:Animal {
    func sound()->String {
        return "Hong Hong"
    }
}

class Substance {
    func livingCompound()->String {
        return "Consist of bio-molecule"
    }
}

class myPets:Dog, Substance {
    func itsAddress()->String {
        // Error:Multiple inheritance from classes 'Dog' and 'Substance'
    }
}
Run Code Online (Sandbox Code Playgroud)

Woj*_*wka 64

Swift不支持多重继承,遵循目标C.这不是两个类的继承:

class SecondViewController: UIViewController, UITextFieldDelegate
Run Code Online (Sandbox Code Playgroud)

它是从一个类继承UIViewController并采用UITextFieldDelegate协议.有关协议的信息,访问https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html

  • 我会说这种语法有点误导.I Obj-C包含在"<>"中的协议,但现在它的顺序相同,不易读.希望一些Apple Swift工程师能够阅读此内容并添加语法方式以使代表更加明确 - 如果您同意,请提供支持.(一厢情愿;)) (70认同)
  • 意见不同:)我实际上喜欢当前的Swift语法远远超过Objective C,我并不觉得它令人困惑.我总是发现使用<>的Objective C语法对我来说不是很自然. (16认同)
  • 即使他们最终没有使用`<>`,我仍然想要一些区分协议和类的方法 (16认同)