Android/kotlin/クラス
提供: 初心者エンジニアの簡易メモ
アクセス修飾子
- public, protected, private, internal の4つ
- javaはデフォでinternalだが、kotlinはpublicとなる。
クラス呼び出し
MainActivity.kt
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) var user = User() var name = user.getName() // 型なし var name2: String = user.getName() // 型指定もできる Log.i("test", "name=" + name) var logic = SampleLogic() logic.execLogic() } }
User.kt
class User { fun getName(): String { return "taro" } }
SampleLogic.kt
class SampleLogic { fun execLogic() { Log.i("test", "SampleLogic exec") return } }
戻りの型がない場合はUnit(javaでいうvoid)を指定したことになる。型がない状態で、return "hoge"とかにするとエラーとなる。
setter/getterについて
MainActivity.kt
var user = User() user.name = "taro" Log.i("MainActivity", user.name)
User.kt
import android.util.Log class User { var name: String = "" get() { Log.i("User", "get name=" + field) return field } set(value) { Log.i("User", "set name=" + value) field = value } }
get()とset()はfunction中にロジックを記述したいときだけ追加する。省略しても値は設定取得できる。
継承
Animal.kt
open class Animal(foot: Int) { var foot = 0 init { this.foot = foot } }
Cat.kt
class Cat() : Animal(4) { }
MainActivity.kt
Log.i("test", "cat.foot=" + Cat().foot); // 4
継承(他言語でよくある書き方でkotlinでは非推奨かも)
Animal.kt
open class Animal { var foot = 0 constructor(foot: Int) { this.foot = foot } }
Cat.kt
class Cat : Animal { constructor() : super(4) {} }
継承クラスについて
constructorをつけたり
open class Animal constructor(foot: Int) { var foot = 0 init { this.foot = foot } }
パラメータ側にvarをつけたりできる
open class Animal constructor(var foot: Int) { init { this.foot = foot } }