【问题标题】:Why I can not inherit from multiple classes in swift just like it's library classes为什么我不能像库类一样从多个类中继承
【发布时间】:2014-08-31 19:28:59
【问题描述】:

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

import UIKit
class SecondViewController: UIViewController, UITextFieldDelegate {
    // No Error
}

然后定义了以下类,然后创建新类 myPets,我喜欢继承 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'
    }
}

【问题讨论】:

    标签: swift


    【解决方案1】:

    Swift 不支持多重继承,在此遵循 Objective C。这不是从两个类继承:

    class SecondViewController: UIViewController, UITextFieldDelegate
    

    继承自一个类UIViewController,采用UITextFieldDelegate协议。在https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html

    阅读协议

    【讨论】:

    • "继承类后采用协议!明白了。
    • 我会说这种语法有点误导。我 Obj-C 协议包含在“”中,但现在它的顺序相同,可读性不强。希望一些 Apple Swift 工程师会阅读本文并添加语法方式以使代表更明确 - 如果您同意,请投票。 (一厢情愿;))
    • 意见不同 :) 我实际上比 Objective C 更喜欢当前的 Swift 语法,而且我不觉得它令人困惑。我总是发现带有 的 Objective C 语法对我来说不是很自然。
    • 即使他们最终没有使用<>,我仍然想要一些区分协议和类的方法
    • 同意,放弃最容易误导的(接口/协议)语法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 2010-10-20
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    相关资源
    最近更新 更多