クラスの基本
- Kotlinでクラスを定義するには以下のように書く
class User {
var lastName = ""
var fistName = ""
var age = 0
fun introduction() {
println("Name ${fistName} ${lastName}です。${age}さい")
}
}
fun main() {
val user = User()
user.lastName = "山田"
user.fistName = "太郎"
user.age = 44
user.introduction()
}
アクセス修飾子
修飾子 |
概要 |
public |
全てのクラスからアクセスが可能 |
protected |
定義されたクラスとそのサブクラスからののみアクセスが可能 |
internal |
同じモジュール内のクラスから飲みアクセス可能 |
private |
定義されたクラスからのみアクセスが可能 |
class User {
var lastName = ""
var fistName = ""
private var age = 0
fun introduction() {
println("Name ${fistName} ${lastName}です。${age}さい")
}
protected hoge () {
println("外部から呼べない")
}
}
fun main() {
val user = User()
user.lastName = "山田"
user.fistName = "太郎"
user.age = 44
user.introduction()
}
プロパティ
- プロパティはただ単にクラスが持つ変数ではなく、それ自体がアクセサーを持つ
- アクセサーは値の取得・設定を行うシンプルなメソッドのこと。getter(取得)/setter(設定)
- アクセサーの引数は慣例的にvalueを用いる
- fieldはバッキングフィールドと呼ばれる
class User {
var lastName = ""
var fistName = ""
var age = 0
set(value) {
if (value < 0) {
println("年齢が不正です。")
} else {
field = value
}
}
get() {
"${field}00"
}
fun introduction() {
println("Name ${fistName} ${lastName}です。${age}さい")
}
}
fun main() {
val user = User()
user.lastName = "山田"
user.fistName = "太郎"
user.age = -10
user.introduction()
}
コンストラクタ
class User constructor(var lastName: String, var fistName: String, var age: Int) {
fun introduction() {
println("Name ${fistName} ${lastName}です。${age}さい")
}
}
fun main() {
val user = User("山田","太郎", 20)
user.introduction()
}
class User constructor(var lastName: String, var fistName: String, var age: Int) {
constructor(lastName: String,fistName: String):this(lastName, fistName, 20) {}
constructor(lastName: String):this(lastName, "太郎", 20) {}
constructor():this("山田") {}
fun introduction() {
println("Name ${fistName} ${lastName}です。${age}さい")
}
}
fun main() {
// 全部同じ結果になります。
var user = User("山田","太郎", 20)
user.introduction()
user = User("山田","太郎")
user.introduction()
user = User("山田")
user.introduction()
}