2016/12/24の30分 Kotlinメモ⚡
2016/12/24の30分 Kotlinメモ⚡
書いてるコードは雑にここにあります。
Kotlinスタートブック -新しいAndroidプログラミング を引き続き読んでる。

Kotlinスタートブック -新しいAndroidプログラミング
- 作者: 長澤太郎
- 出版社/メーカー: リックテレコム
- 発売日: 2016/07/13
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
Interfaces
デフォルト実装が持てるのと、プロパティ(も持てるのが興味深い。
プロパティもabstractなものと、デフォルトなものが持てると。
interface GreeterKai { // プロパティも持てる(プロパティ自体が値を持つものは宣言できない = varは無理.val) // 固定値 or 他のプロパティなら返せる val hum: String get() = "hum" // デフォルト実装を持てる fun hum() { println(language) } val language: String fun sayHello(target: String) }
実装するとこんな感じ。
class EnglishGreeterKai : GreeterKai { override val language = "English" override fun sayHello(target: String) { println("Hello $target!") } }
interfaceの継承
interfaceは別のinterfaceを継承することができると。
ここでもプロパティの扱いがどうなるか見てみた。
interface内ではやっぱりプロパティは値を持てないのね。
interface Homu { val homu1: Int var homu: Int fun homu() } interface Humu : Homu { // interface内のプロパティは値を持てない(バッキングフィールドを持てない) // 他のinterfaceが持つプロパティをoverrideしても、返せるのは固定値 or 他のプロパティ override val homu1: Int get() = 0 fun humu() }
ちなみにResolving overriding conflictsについて書いてあるけど、実際にそういうケースに出くわしたことがない気がするので割愛。
出くわした場合でもそんな難しいことではないしねー。
まとめ
いかんせんプロパティの扱いになれないですなー...⚡