Kotlinのinterfaceについて学びます。
Javaのそれと同様な存在ですが、Kotlinのinterfaceはimplementキーワードがありません。
どーでもいいか、などJavaといくつか違いがあります。
サンプルをみていきましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
fun main(args: Array<String>) { var api = masterApi() // super success // success api.callApi() } // 1.interfaceキーワードを先頭に付ける interface ApiHandler { // 2.プロパティは宣言できるが、interfaceはバッキングフィールドを持てない val url: String // 3.abstractと異なりinterfaceは中身を実装することができる fun success() { println("super success") } fun failure() } interface touchListerner { fun onTouch() } // 継承と異なり、interfaceは複数implementすることが可能 class masterApi() : ApiHandler, touchListerner { // 4.プロパティはoverrideが必要 override val url = "/masterApi" // 5.関数も同様 override fun success() { println("api success") } override fun failure() { println("api failure") } override fun onTouch() { println("touch screen") } fun callApi() { // 3.interfaceで定義した中身が呼ばれる super.success() success() } } |
1.interface定義方法
interface インターフェイス名 {
}
になります。
2.プロパティは宣言できるが、interfaceはバッキングフィールドを持てない
var url : String
と定義していますが、変数の中身を代入していません。
interfaceをimplementするクラス内で、中身を代入する必要があります。
3.abstractと異なりinterfaceは中身を実装することができる
Javaと違いinterfaceで中身を実装することができます。
ここで定義した関数の中身を実行する場合は、super.success()のように
superキーワードを使用して呼び出します。
4.継承と異なり、interfaceは複数implementすることが可能
Javaと同様interfaceは複数implementすることが可能です。
形式は、
class クラス名 : インターフェイス名1 , インターフェイス名2 {
}
のように,で区切ります。
5.プロパティはoverrideが必要
interfaceで宣言しているプロパティや関数をimplementしているクラスで宣言する際は、
overrideキーワードがabstractと同様に必要になります。