Как сделать мульти-наследование в swift?
Мне нужно реализовать класс(для удобства назовите его A), производный от UITableViewController и другой(B) от UICollectionViewController. И есть много общих вещей, поэтому я хочу поместить их в класс (C) и позволить A и B наследовать C. Теперь у A и B есть два класса для наследования, но множественное наследование не разрешено в swift, так как реализовать это? Я знаю, что в swift нет множественного наследования, но я все еще хочу знать, как делать то, что я описал выше.
3 ответов
как указано в комментариях @Paulw11 правильно. Вот пример, который включает A & B наследование от C. Который я назвал 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, путь должен посмотреть протоколы, но это довольно большая тема для обсуждения в ответ.
есть также много других вопросы С той же областью
множественное наследование не допускается в Swift. Вместо этого вы можете соответствовать любому протоколу. Протоколы интерфейсы в Java.