클래스 속 생성자 중첩 (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
'iOS_Swift > 문법 정리' 카테고리의 다른 글
Swift - 초기화 designated Initializer, convenience Initializer (0) | 2022.05.04 |
---|---|
Swift - Failable initializer (0) | 2022.02.08 |
Swift - 클래스 calculated property (0) | 2022.02.07 |
Swift - 클래스 init 메서드, self (0) | 2022.02.07 |
Swift - 클래스 instance생성 후 프로퍼티와 메서드 접근 (0) | 2022.02.06 |