我需要实现一个从UITableViewController
派生的类A和另一个从UICollectionViewController
派生的类B,并且有许多共同点,所以我想将它们放在类C中,让A和B继承C。现在A和B都需要继承两个类,但是Swift不允许多重继承,那么该怎么实现呢?我知道Swift不支持多重继承,但是我仍然想知道如何实现上述操作。
我需要实现一个从UITableViewController
派生的类A和另一个从UICollectionViewController
派生的类B,并且有许多共同点,所以我想将它们放在类C中,让A和B继承C。现在A和B都需要继承两个类,但是Swift不允许多重继承,那么该怎么实现呢?我知道Swift不支持多重继承,但是我仍然想知道如何实现上述操作。
如@Paulw11在评论中所述是正确的。这里有一个例子,涉及到从C继承的A和B。我已经将其命名为DogViewController
和CatViewController
(继承自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()
Swift不允许多重继承,但可以遵循任何协议。协议类似于Java中的接口。