[Kotlin] Class & Object & constructor

델버·2022년 6월 1일
0

Kotlin

목록 보기
12/18

class, object, constructor

  • 자동자가 있다면 property속성은 이렇다
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") 
// Car's name is boongboong-i, kind is kia ray

    var car2 = Car("choco", "kia morning") 
// Car's name is choco, kind is kia morning

    var car3 : Car = Car()                         
// Car's name is myCar, kind is kia pride 

    var car4 = Car(kind = "chevrolet spark") 
// Car's name is myCar, kind is 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}")
		// orner is me
}
class Car (name: String, kind: String) {
//  var orner = orner error 발생
    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 순으로 진행된다.

0개의 댓글