Hello, Android!

생성자 본문

Kotlin

생성자

lwndnjs93 2020. 3. 11. 22:23

클래스의 객체를 생성할때 가장 먼저 호출되는 함수가 생성자이다

생성자는 객체 생성시 가장 먼저 호출되어 생성자에 넘겨준 값으로 

프로퍼티를 초기화 시켜준다

특이한것은 코틀린의 생성자는 주생성자, 부생성자 가 있으며

부생성자는 매개변수를 다르게 하면 여러개의 부생성자를 만들수 있다

 

- 부 생성자

부생성자는 클래스 내에 constructor를 함수처럼 만들어서 사용한다

지난 클래스 설명에서 프로퍼티는 항상 선언과 동시에 초기화를 해야한다고 했지만

( https://lwndnjs93.tistory.com/33 코틀린의 클래스)

이번에는 생성자가 있어서 객체 생성시 프로퍼티를 초기화 하기 때문에

선언과 동시에 초기화를 하지 않아도 된다

이번에는 Car 클래스에 부생성자가 두개 존재한다

한개는 세개의 매개변수를 받고 다른 한개는 두개만 받는다

main에서 Car의 객체도 서로 다른 두개의 객체에 서로 다른 프로퍼티로 초기화되서 생성된다

 

- 주 생성자

주 생성자는 클래스명 뒤에 constructor 키워드를 이용하여 만들수 있다

클래스명 constructor(){} 의 형태이다

주 생성자는 constructor 키워드를 생략하고 괄호만 사용할수도 있다

두 케이스 모두 생성자의 매개변수를 프로퍼티에 다시 할당하였지만

프로퍼티를 생성자에 포함할수도 있다

프로퍼티를 생성자에 넣음으로써 한결 깔끔해졌다

객체 생성시 가장 먼저 호출되는 함수가 생성자라고 앞서 설명하였다

생성자 또한 함수이기때문에 프로퍼티 초기화 이외의 다른 작업도 수행할수 있다

하지만 초기화 이외의 다른 작업을 하기 위해서는 주 생성자를 사용하는 경우에만 가능하다

주생성자 사용시 init{} 으로 프로퍼티 초기화 이외의 작업 코드를 적을수 있다

이는 생성자 호출시에 init{} 내의 코드가 호출되어서 위와같이 실행하면 

call Car class constructor!!
call Car class constructor!!
car price : 900000
911 macan, 900000, red

라는 결과가 출력된다

 

함수에는 매개변수가 존재하고, 함수 호출시 특정 매개변수를 안넣을 경우를 대비하여

디폴트값을 설정하는것이 가능하다

생성자도 함수이기때문에 생성자의 디폴트값을 설정하는것이 가능하다

이번에는 주 생성자가 모든 매개변수를 받으며, 디폴트값을 설정했다

그래서 main함수에서 carInfo2 에 객체를 생성할때 생성자의 매개변수를 아무것도 안넣어도

디폴트값으로 초기화된 객체가 생성된다

'Kotlin' 카테고리의 다른 글

다형성  (0) 2020.03.15
상속  (0) 2020.03.15
클래스  (0) 2020.03.10
예외처리  (0) 2020.03.09
break와 continue  (0) 2020.03.08