class Player(_name: String,
_healthPoints:Int,
_isBlessed: Boolean,
_isImmortal: Boolean) {
var name = _name
get() = field.capitalize()
set(value) {
field = value.trim()
}
val healthPoints = _healthPoints
val isBlessed = _isBlessed
private val isImmortal = _isImmortal
fun castFireball(numFireballs: Int = 2) =
println("한 덩어리의 파이어볼이 나타난다. (x$numFireballs)")
}
생성자의 매개변수와 클래스의 프로퍼티가 이름이 겹칠 경우, 구분을 위해 생성자의 매개변수 이름 앞에 언더스코어(_)를 붙이는 관례가 있습니다.
class Player(_name: String,
var healthPoints:Int,
var isBlessed: Boolean,
private val isImmortal: Boolean) {
var name = _name
get() = field.capitalize()
set(value) {
field = value.trim()
}
fun castFireball(numFireballs: Int = 2) =
println("한 덩어리의 파이어볼이 나타난다. (x$numFireballs)")
}
class Player(_name: String,
var healthPoints:Int,
var isBlessed: Boolean,
private val isImmortal: Boolean) {
var name = _name
get() = field.capitalize()
set(value) {
field = value.trim()
}
constructor(name:String) : this(name,
healthPoints=100,
isBlessed=true,
isImmortal=false)
fun castFireball(numFireballs: Int = 2) =
println("한 덩어리의 파이어볼이 나타난다. (x$numFireballs)")
}
class Player(_name: String,
var healthPoints:Int,
var isBlessed: Boolean,
private val isImmortal: Boolean) {
var name = _name
get() = field.capitalize()
set(value) {
field = value.trim()
}
constructor(name:String) : this(name,
healthPoints=100,
isBlessed=true,
isImmortal=false) {
if(name.toLowerCase() == "kar") healthPoints = 45
}
fun castFireball(numFireballs: Int = 2) =
println("한 덩어리의 파이어볼이 나타난다. (x$numFireballs)")
}
class Player(_name: String,
var healthPoints:Int = 100, // 기본인자
var isBlessed: Boolean,
private val isImmortal: Boolean){
var name = _name
get() = field.capitalize()
set(value) {
field = value.trim()
}
constructor(name:String) : this(name,
//healthPoints=100, 이거 지울 수 있음 기본인자가 있으니
isBlessed=true,
isImmortal=false) {
if(name.toLowerCase() == "kar") healthPoints = 45
}
fun castFireball(numFireballs: Int = 2) =
println("한 덩어리의 파이어볼이 나타난다. (x$numFireballs)")
}
// 다양한 생성자 호출 방법
Player("Madrigal", 64, true, false)
Player("Madrigal", true, false)
Player("Madrigal")
Player(name = "Madrigal",
healthPoints = 64,
isBlessed = true,
isImmortal=false)
class Player(_name: String,
var healthPoints:Int = 100,
var isBlessed: Boolean,
private val isImmortal: Boolean) {
:
init {
require(healthPoints > 0, {"healthPoints는 0보다 커야 합니다."})
require(name.isNotBlank(), {"플레이어는 이름이 있어야 합니다."})
}
}
require 특정 조건이 참인지 검사하고 그렇지 않으면 예외를 발생시키는 데 사용