如何在swift中进行多重继承?

时间:2016-11-01 13:23:14

标签: ios swift

我需要实现一个派生自UITableViewController的类(为了便利名称A)和另一个来自UICollectionViewController的(B)。并且有很多常见的东西,所以我想把它们放在类(C)中让A和B继承C.现在A和B都有两个继承类,但是swift中不允许多重继承,所以如何实现这个?我知道swift中不允许多重继承,但我仍然想知道如何做我上面描述的事情。

3 个答案:

答案 0 :(得分:19)

正如@ Paulw11的评论所述,是正确的。以下是一个涉及 A & B 继承自 C 。我将其命名为DogViewControllerCatViewController(其继承形式为PetViewController)。您可以看到协议如何有用。这只是一个非常基本的例子。

protocol Motion {
    func move()
}

extension Motion where Self: PetViewController {

    func move() {
        //Open mouth
    }

}

class PetViewController: UIViewController, Motion{
    var isLoud: Bool?

    func speak(){
        //Open Mouth
    }
}

class DogViewController:PetViewController {

    func bark() {

        self.speak()

        //Make Bark Sound
    }
}

class CatViewController: PetViewController {

    func meow() {

        self.speak()

        //Make Meow Sound


    }

}

//....

let cat = CatViewController()
cat.move()
cat.isLoud = false
cat.meow()

答案 1 :(得分:3)

你在Swift中不能有多重继承,要走的路是查看协议,但这是一个在答案中讨论的相当大的话题。

还有许多其他questions具有相同的范围

答案 2 :(得分:2)

Swift中不允许多重继承。您可以改为使用任何协议。协议就像Java中的接口一样。

相关问题