Как сделать мульти-наследование в 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.