「Android/kotlin/クラス」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→継承) |
(→継承) |
||
| 行75: | 行75: | ||
MainActivity.kt | MainActivity.kt | ||
Log.i("test", "cat.foot=" + Cat().foot); // 4 | Log.i("test", "cat.foot=" + Cat().foot); // 4 | ||
| + | |||
| + | ==継承よくある書き方== | ||
| + | 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:39時点における版
アクセス修飾子
- 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
継承よくある書き方
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
}
}
