Interfaceでは、abstractとは異なり、定義したinterface内で中身を実装できますが、
メソッド名がかぶってしまう場合に呼びだしたいinterfaceを分ける方法を学びます。
例を見ましょう
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
fun main(args: Array<String>) { var greet = Greet(); greet.greet() } interface Evening { fun greet() { print("good evening") } } interface Morning { fun greet() { print("good morning") } } class Greet : Morning, Evening { override fun greet() { // 1.<>で場合分けする super<Evening>.greet() } } |
Greetクラスがあり、MorningとEveningをそれぞれimplementしています。
interfaceの中身は実装されており、Eveningのgreetを呼び出したい場合は、
下記のように記述します。
super<インターフェイス名>.関数名
これで、呼ぶインターフェイス関数を区別することができました。