「Android/kotlin/クラス」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→継承) |
(→継承(他言語でよくある書き方でkotlinでは非推奨かも)) |
||
(同じ利用者による、間の3版が非表示) | |||
行75: | 行75: | ||
MainActivity.kt | MainActivity.kt | ||
Log.i("test", "cat.foot=" + Cat().foot); // 4 | Log.i("test", "cat.foot=" + Cat().foot); // 4 | ||
+ | |||
+ | ==継承(他言語でよくある書き方でkotlinではセカンダリコンストラクタは非推奨)== | ||
+ | Animal.kt | ||
+ | <pre> | ||
+ | open class Animal { | ||
+ | var foot = 0 | ||
+ | constructor(foot: Int) { | ||
+ | this.foot = foot | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | Cat.kt | ||
+ | <pre> | ||
+ | class Cat : Animal { | ||
+ | constructor() : super(4) {} | ||
+ | } | ||
+ | </pre> | ||
==継承クラスについて== | ==継承クラスについて== |
2020年2月27日 (木) 17:41時点における最新版
目次
アクセス修飾子
- 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 } }