Kotlin 문법과 예제 7 - 클래스의 생성자

강유리 (Rein)·2023년 4월 11일
0

Kotlin

목록 보기
7/10

생성자 (constructor)

: 새로운 인스턴스를 만들기 위해서 호출하는 특수한 함수

생성자 호출 시 클래스의 인스턴스를 만들어 반환받을 수 있다.

*인스턴스(instance)? : 일반적으로 실행 중인 임의의 프로세스, 클래스의 현재 생성된 오브젝트(객체)

생성자의 역할

  • 인스턴스(instance)의 속성을 초기화
  • 인스턴스(instance) 생성 시 구문을 수행 → init 함수를 사용하여야 수행이 가능하다.
    *init 함수? : init 함수는 파라미터나 반환형이 없는 특수한 함수

클래스의 속성을 선언과 동시에 생성자를 선언하는 방법

class Person(var name:String, val birthYear:Int //생성자)
main(){
	//Person 인스턴스를 3개 만든다. 
	var a = Person("박보영", 1990)
	var b = Person("전정국", 1997)
	var c = Person("장원영", 2004)
}


class Person (var name:String, val bitrhYear:Int){
	init{
			println("${this.bitrhYear}년생 ${this.name}님이 생성되었습니다."}
		}
}
//인스턴스의 생성을 통해 init이 호출되어 세 개의 인스턴스에 넣은 속성들이 출력된다. 

*this? : 인스턴스 자신의 속성이나 함수를 호출하기 위해 클래스 내부에서 사용되는 키워드

생성자 사용 시 모든 속성을 수동으로 초기화하는 것이 비효율적인 경우가 있다.

→ 따라서, 클래스를 만들 때 기본으로 선언하는 기본 생성자에 추가로 필요에 따라 추가적으로 선언하는 보조 생성자를 만든다.

보조생성자

보조 생성자는 기본 생성자와 다른 형태의 생성자를 제공하여 인스턴스 생성 시 편의를 제공하거나 추가적인 구문을 수행하는 기능을 제공하는 역할을 한다.
보조 생성자는 constructor 라는 키워드를 사용한다.

fun main(){
	//Person 인스턴스를 3개 만든다. 
	var a = Person("박보영", 1990)
	var b = Person("전정국", 1997)
	var c = Person("장원영", 2004)

	var d = Person("이루다")
	var e = Person("차은우")
	var f = Person("류수정")
}


class Person (var name:String, val birthYear:Int){
	init{
			println("${this.birthYear}년생 ${this.name}님이 생성되었습니다.")
		}

	constructor(name:String) : this(name, 1997){
			println("보조 생성자가 사용되었습니다.")
		}
}

보조 생성자를 만들 때는 반드시 기본 생성자를 통해 속성을 초기화 해야 한다.

보조 생성자가 기본 생성자를 호출하도록 하려면 콜론(:)을 붙인 후 this 키워드를 사용하고, 기본 생성자가 필요로 하는 파라미터를 괄호 안에 넣어야 한다.

참고자료
디모의 코틀린 강좌

profile
(멋쨍이) Android Developer (하고싶다)

0개의 댓글