생성자의 활용
클래스를 실체화할 때 최초로 실행할 로직을 작성
기본 생성자
- 이전까지 클래스 만들던 행위와 차이가 없음
- init이나, constructor와 같은 생성자 명시적으로 선언 안 해도 가능함
fun main() {
}
class Character {
var name:String = ""
var hairColor:String = ""
var height:Double = 0.0
fun fireBall() {
println("파이어볼!")
}
fun compositing(device1:String, device2:String): String {
var device3 = device1 + device2
println("새로운 무기인 ${device3}입니다")
return device3
}
}
명시적 생성자 예시
주 생성자(primary constructor)
- init 안에 코드 적음
- 클래스 옆에 파라미터 적음
- 한 가지의 형태로 클래스를 실체화할 때 사용
- 항상 <이름, 머리색상, 키>만 생성자에서 최초로 코드를 실행할 때는 주 생성자를 사용
fun main() {
}
class Character(_name:String, _hairColor:String, _height:Double) {
var name:String = ""
var hairColor:String = ""
var height:Double = 0.0
init {
println("매개변수없는 생성자 실행 완료!")
}
fun fireBall() {
println("파이어볼!")
}
fun compositing(device1:String, device2:String): String {
var device3 = device1 + device2
println("새로운 무기인 ${device3}입니다")
return device3
}
}
부 생성자(secondary constructer)
- constructor 안에 파라미터 적음
- 한 가지의 형태로 클래스를 실체화할 때 사용
- <이름, 머리색상, 키> 또는 <이름, 머리색상, 키, 나이, 성별> 처럼 여러개의 생성자를 통해 최초로 코드를 실행할 때는 부 생성자를 이용
생성자 하나 예시
fun main() {
}
class Character {
var name:String = ""
var hairColor:String = ""
var height:Double = 0.0
constructor(_name:String, _hairColor:String, _height:Double) {
println("${_name}을 생성자로 넘겼어요")
println("${_hairColor}를 생성자로 넘겼어요")
println("${_height}를 생성자로 넘겼어요")
}
fun fireBall() {
println("파이어볼!")
}
fun compositing(device1:String, device2:String): String {
var device3 = device1 + device2
println("새로운 무기인 ${device3}입니다")
return device3
}
}
생성자 여러 개 예시
fun main() {
}
class Character {
var name:String = ""
var hairColor:String = ""
var height:Double = 0.0
var age:Int = 0
var gender:String = ""
constructor(_name:String, _hairColor:String, _height:Double) {
println("${_name}을 생성자로 넘겼어요")
println("${_hairColor}를 생성자로 넘겼어요")
println("${_height}를 생성자로 넘겼어요")
}
constructor(_name:String, _hairColor:String, _height:Double, _age:Int, _gender:String) {
println("${_name}을 생성자로 넘겼어요")
println("${_hairColor}를 생성자로 넘겼어요")
println("${_height}를 생성자로 넘겼어요")
println("${_age}를 생성자로 넘겼어요")
println("${_gender}를 생성자로 넘겼어요")
}
fun fireBall() {
println("파이어볼!")
}
fun compositing(device1:String, device2:String): String {
var device3 = device1 + device2
println("새로운 무기인 ${device3}입니다")
return device3
}
}