240509_디모의 코틀린 문법 강의 #9강. 클래스의 생성자

2024. 5. 6. 20:29TIL(Today I Learned)

유튜브 - 디모의 코틀린 문법 강의 정리

 

#9강. 클래스의 생성자

 

1. 생성자: 새로운 인스턴스를 만들기 위해 호출하는 특수한 함수

 1) 생성자의 기능

  - 인스턴스의 속성을 초기화

  - 인스턴스 생성 시 구문을 수행(init 함수 사용)

 

2. init 함수: parameter나 반환형이 아닌, 생성자를 통해 인스턴스가 만들어질 때 호출되는 함수

class Person(var name:String, val birthYear:Int){
	init{
    	println("${this.birthYear}년생 ${this.name}님이 생성되었습니다.")
        // 인스턴스 자신의 속성이나 함수를 호출할 때는 클래스 내부에서 사용되는 키워드 'this'를 사용
    }
}

var a = Person("박보영", 1990)
// -> 1990년생 박보영님이 생성되었습니다.

 

* 생성해야 하는 인스턴스가 많을 때, 속성이 겹치는 인스턴스가 많은 경우 일일이 인스턴스를 만드는 건 비효율적임

   => 기본 생성자(클래스 생성 시 기본으로 선언) + 보존 생성자(constructor) 형태로 인스턴스를 생성

class Person(var name:String, val birthYear:Int){
	init{
    	println("${this.birthYear}년생 ${this.name}님이 생성되었습니다.")
    }
    constructor(name:String): this(name, 1997){
    // 보조 생성자 사용 시 반드시 기본 생성자를 통해 속성을 초기화해줘야 함
    	println("보조 생성자가 사용되었습니다.")
    }
    
var d = Person("이루다") // -> 1997년생 이루다님이 생성되었습니다. 보조 생성자가 사용되었습니다. 
var e = Person("류수정") // -> 1997년생 류수정님이 생성되었습니다. 보조 생성자가 사용되었습니다. 
var f = Person("장문복") // -> 1997년생 장문복님이 생성되었습니다. 보조 생성자가 사용되었습니다.