본문 바로가기
iOS_Swift/문법 정리

Swift - 클래스 생성자 중첩(method overloading)

by chozjjae 2022. 2. 7.

클래스 속 생성자 중첩 (method overloading)에 대해 알아보겠습니다.

class의 용어정리 - https://chozjjae.tistory.com/43

class의 init( ) 메서드, self 사용 - https://chozjjae.tistory.com/46


생성자 중첩이란 ?

매개변수의 개수와 자료형이 다른 같은 이름의 함수를 여러개 정의하는 것을 의미합니다.

 

특징) 매개변수가 다른 두 생성자를 통해 두가지 방법으로 인스턴스를 만들 수 있습니다.

class hap{
    var x : Int
    var y : Int = 100
    
    func math(){
        print("x = \(x), y = \(y)")
    }
    init(x : Int, y: Int){
        self.x = x
        self.y = y
    }
    init(x:Int){
        self.x = x
    }
}

var cho : hap = hap(x:50,y:60)
var kim : hap = hap(x:20)

cho.math() //x = 50, y = 60
kim.math() //x = 20, y = 100

1. init메서드를 이용하여 매개변수가 다른 두 생성자를 만들어 주었습니다.

두 init메서드를 이용후 비교 해보기 위해

2. [cho]라는 1번 인스턴스와

3. [kim]이라는 2번 인스턴스를 생성 후 각각 출력해보았습니다.

4. 그러자 1번 인스턴스[cho]에서는 첫번째 init( )메서드를 받아와 두 값을 모두 초기화 후 50과 60을 출력해주었고,

5. 2번 인스턴스[kim] 에서는 두번째 init( ) 메서드를 받아와 x값만 초기화 시켜준 후 y값은 초깃값을 받아와 20과 100을 출력해 주었습니다.

 

이와 같은 방법을 method overloading : 생성자 중첩 이라고 합니다.


참고 영상 :

https://www.youtube.com/watch?v=w1vGEnwROOY&list=PLJqaIeuL7nuEEROQDRcy4XxC9gU6SYYXb&index=28