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
반응형
'Languages > Kotlin' 카테고리의 다른 글
[kotlin] spring boot rs232 통신 ( jSerialComm) 사용 mac 환경 (0) | 2024.05.07 |
---|---|
[kotlin] mutableListOf (0) | 2024.04.30 |
Exception in thread "main" java.lang.UnsupportedClassVersionError (0) | 2023.05.05 |
[Kotlin] 코틀린이란, 코틀린 HelloWorld (0) | 2023.05.05 |