본문 바로가기

Languages/Kotlin

[Kotlin] constructor 생성자

728x90
반응형

코틀린에는 생성자가 Primary Constructor 와 Secondary Constructor 가 있음. 

 

1. Primary Constructor

 아래처럼 명시적으로 class (클래스명) constructor 라고 써주고 그 다음 괄호에 인자로 받을 값을 설정해 주는 형태.

 Primary Constructor 에는 어떤 로직도 들어갈 수 없음. 로직은 init 에 넣는다.

class Person constructor(name: String) { /*...*/ }

 

아래처럼 class (클래스명) constructor 를 써주지 않고 생략한 뒤 괄호안에 인자로 받을 값만 작성해 줘도 기본적으로 Primary constructor 선언한 걸로 인식 

class Person(name: String) { /*...*/ }

 1.1. 로직은 어디다 넣는가?

    $를 사용하여 인자로 전달받은 변수명을 직접 활용 가능하다. e.g ) ${name}

class Person cunstructor(name : String){

    init {
        println("전달받은 인자 ${name}")
    }
    
}

2. Secondary Constructor

 기본적인 구조는 아래처럼 내부에 constructor 라고 선언해 주고 전달받은 인자를 넣어주면 된다.

 이 구조에는 Class Person 뒤에 constructor 를 따로 기술해주지 않았기 때문에 Primary Constructor 가 없는 것이고 내부에 constructor 를 써서 구현해 줬기 때문에 Secondary Constructor 만 있는 코드이다. 

Class Person{
	constructor(name:String){
    	println("Secondary Constructor ${name}")
    }
}

Primary constructor 를 써주는 경우 : this() 로 Primary constructor 를 extend 해줘야 한다. 

실행순서는 init -> constructor 

class Person constructor (name : String){
	init{
    	println("Primary constructor ${name}");
    }
    constructor(name : String, name_something : String) : this(name){
    	println("Secondary constructor ${name} ${name_something}")
    }

}
728x90
반응형