class, object, constructor
property : speed, wheel, door, window, color
skill: break, accelerator, turbo, drift
- 자동차를 만드려면 청사진이 필요한데 class가 그 역할을 하는 것이다.
- 그 청사진을 가지고 각각 다른 자동차를 만들 수 있을 것이다. 속도가 느린 차와 빠른 차, 색깔이 파란색과 빨란색, 창문이 2개인 차와 4개인 차 등등. 이렇게 자동차의 청사진을 만들어 주는 것을 class라고 하고 여기서 생성된 차들을 Object(객체)라고 한다.
fun main() {
var car1 : Car = Car("boongboong-i", "kia ray")
var car2 = Car("choco", "kia morning")
var car3 : Car = Car()
var car4 = Car(kind = "chevrolet spark")
}
class Car (name: String = "myCar", kind: String = "kia pride" ) {
init {
println("Car's name is $name, kind is $kind")
}
}
contructor(parameter)
- contructor를 빼고 parameter만 넣어도 됨
- init(initializer) - 객체가 생성될 때 실행하는 구문
생성할 클래스명(변수:타입=값, ...)
- 기본값으로 설정됨
- 만약 두 번째 parameter만 넣고 싶으면
클래스명(두 번째 parameter변수 = 값)
을 지정하여 넣으면,
첫 번째 parameter는 기본값이 들어가고 두 번째 parameter는 사용자가 지정한 값이 들어가게 된다.
fun main() {
var car1 = Car("choco", "kia morning")
var car2 = Car("boongboong", "kia ray", "Kim")
println("orner is ${car2.orner}")
}
class Car (name: String, kind: String) {
var orner : String? = null
var name : String? = name
var kind = kind
init {
println("Car's name is $name, kind is $kind")
}
constructor(name: String, kind: String, orner : String)
: this(name,kind) {
this.orner = orner
}
fun gogo () {
println("$name")
}
}
constructor(var1: type, va2: type, newvar:type) : this(var1,var2)
- 앞서 constructor의 parameter를 정해주고 class 안에 constructor를 해주면 두 번째 생성자가 된다. 이때의 두 번째 contructor는 Java의 overloading과 같다. 두 번째 parameter 뒤에
:this(기존 parameter)
를 적어주면 된다.
- 두 번째 contructor에서 넘겨받은 parameter는 member variable이 바로 받을 수 없으므로
this.member variable = parameter
로 넘겨줘야한다.
- 첫 번째 parameter → init → constructor 순으로 진행된다.