いわゆるダイアモンド継承問題は、Objective-Cでも発生します。 Wikipediaに嘘が書いてあったので、そのツッコミなど。 "多重継承ができない言語(Objective-C、PHP、C#、Java)ではインタフェースの多重継承が可能である(Objective-C ではプロトコルと呼ぶ)。インタフェースは基本的には抽象基底クラスであり、抽象メソッドからなる(データメンバを持たない)。従って特定のメソッドやメンバ変数には常に1つの実装しかないので、あいまいさは発生しない。" 菱形継承問題 - Wikipedia 菱形継承問題は、複数のクラスを継承した際に、親クラスが同一名のメソッド/フィールド等を持っていた場合、それを呼び出した時にどちらの親による定義として呼び出されるかが、あいまいである(言語仕様として未定義である、あるいは「この場合の動作は不定である」等と言語仕様に書かれている)
![プロトコル実装における菱形継承問題 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/35c62b47b8cf42af3073b051f438cc218945bb5b/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-f625e957b80c4bd8dd47b724be996090.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUUzJTgzJTk3JUUzJTgzJUFEJUUzJTgzJTg4JUUzJTgyJUIzJUUzJTgzJUFCJUU1JUFFJTlGJUU4JUEzJTg1JUUzJTgxJUFCJUUzJTgxJThBJUUzJTgxJTkxJUUzJTgyJThCJUU4JThGJUIxJUU1JUJEJUEyJUU3JUI2JTk5JUU2JTg5JUJGJUU1JTk1JThGJUU5JUExJThDJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkNtaWRkbGUmcz0wYjcyN2RiMDMwNWNiOWMzMmFiMjVjYmE0ODBhNjZiMw%26mark-x%3D142%26mark-y%3D151%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwb2RlbiU0MGdpdGh1YiZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MTFlMTU5NWU0MGM5ZTY3NjA4YTFhYTA5ZjUwNDlkZDU%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Dbd02ac1b9d83263c490570935192f7ca)