클래스 - 생성자

황승현·2023년 12월 7일
0

코틀린 강의 정리

목록 보기
16/36

생성자의 활용

클래스를 실체화할 때 최초로 실행할 로직을 작성

  • 기본 생성자명시적 생성자가 존재

기본 생성자

  • 이전까지 클래스 만들던 행위와 차이가 없음
  • init이나, constructor와 같은 생성자 명시적으로 선언 안 해도 가능함
fun main() {
    
}

class Character {
    var name:String = ""
    var hairColor:String = ""
    var height:Double = 0.0

    fun fireBall() {
        println("파이어볼!")
    }
    fun compositing(device1:String, device2:String): String {
        var device3 = device1 + device2
        println("새로운 무기인 ${device3}입니다")
        return device3
    }
}

명시적 생성자 예시

  • 주 생성자와 부 생성자로 나뉨

주 생성자(primary constructor)

  • init 안에 코드 적음
  • 클래스 옆에 파라미터 적음
  • 한 가지의 형태로 클래스를 실체화할 때 사용
    • 항상 <이름, 머리색상, 키>만 생성자에서 최초로 코드를 실행할 때는 주 생성자를 사용
fun main() {

}

// 클래스 선언부에 생성자를 명시함
class Character(_name:String, _hairColor:String, _height:Double) {
    var name:String = ""
    var hairColor:String = ""
    var height:Double = 0.0

		// 매개변수를 직접 넘기지않음
    init {
        println("매개변수없는 생성자 실행 완료!")
    }

    fun fireBall() {
        println("파이어볼!")
    }
    fun compositing(device1:String, device2:String): String {
        var device3 = device1 + device2
        println("새로운 무기인 ${device3}입니다")
        return device3
    }
}

부 생성자(secondary constructer)

  • constructor 안에 파라미터 적음
  • 한 가지의 형태로 클래스를 실체화할 때 사용
    • <이름, 머리색상, 키> 또는 <이름, 머리색상, 키, 나이, 성별> 처럼 여러개의 생성자를 통해 최초로 코드를 실행할 때는 부 생성자를 이용

생성자 하나 예시

	fun main() {

  }

  class Character {
      var name:String = ""
      var hairColor:String = ""
      var height:Double = 0.0

      // 명시적 생성자 (Constructor)
      // _name, _hairColor, _height와 같이 생성자에 변수를 넘기는 경우에 사용함
      constructor(_name:String, _hairColor:String, _height:Double) {
          println("${_name}을 생성자로 넘겼어요")
          println("${_hairColor}를 생성자로 넘겼어요")
          println("${_height}를 생성자로 넘겼어요")
      }

      fun fireBall() {
          println("파이어볼!")
      }
      fun compositing(device1:String, device2:String): String {
          var device3 = device1 + device2
          println("새로운 무기인 ${device3}입니다")
          return device3
      }
  }

생성자 여러 개 예시

fun main() {

}

class Character {
    var name:String = ""
    var hairColor:String = ""
    var height:Double = 0.0
    var age:Int = 0
    var gender:String = ""

    // 명시적 생성자 (Constructor)
    // _name, _hairColor, _height와 같이 생성자에 변수를 넘기는 경우에 사용함
    constructor(_name:String, _hairColor:String, _height:Double) {
        println("${_name}을 생성자로 넘겼어요")
        println("${_hairColor}를 생성자로 넘겼어요")
        println("${_height}를 생성자로 넘겼어요")
    }
    // _name, _hairColor, _height, _age, _gender와 같이 생성자에 변수를 넘기는 경우에 사용함
    constructor(_name:String, _hairColor:String, _height:Double, _age:Int, _gender:String) {
        println("${_name}을 생성자로 넘겼어요")
        println("${_hairColor}를 생성자로 넘겼어요")
        println("${_height}를 생성자로 넘겼어요")
        println("${_age}를 생성자로 넘겼어요")
        println("${_gender}를 생성자로 넘겼어요")
    }

    fun fireBall() {
        println("파이어볼!")
    }
    fun compositing(device1:String, device2:String): String {
        var device3 = device1 + device2
        println("새로운 무기인 ${device3}입니다")
        return device3
    }
}

0개의 댓글