목차
1. 클래스를 선언하는 방법
2. 클래스의 인스턴스 생성하기
3. 클래스의 생성자를 활용해 변수 선언해보기
📌 클래스를 사용하는 큰 목적 중 하나는 "재사용"을 위해서다.
1) 클래스 이름은 대문자로 시작한다.
ex) class Circle
2) 변수, 상수, 함수는 소문자로 시작한다.
ex) var radius
1) 속성(property) - 변수, 상수
2) 메서드(method) - 함수
3) 생성자(constructor) - 2번 메서드에 포함됨
1) 클래스는 property의 초기값을 선언하지 않으면 에러가 발생한다.
class Circle{
var radius = 10.0 //✅ Ok
}
class Circle{
var radius //🚫 Error
}
2) 변수를 초기화하지 않고 선언만 하고 싶다면 init() 생성자 함수를 통해 값을 초기화 하면 된다. (단, 자료형까지는 선언해줘야 에러가 발생 x)
class Circle{
var radius //🚫 Error
init() {
radius = 10.0
}
}
class Circle{
var radius: Double //✅ Ok
init() {
radius = 10.0
}
}
구조체 또는 클래스에 생명을 불어 넣어주는 마법의 함수이다.
💁🏻♂️ 즉, 구조체 또는 클래스의 구성, 틀에 맞는 인스턴스(객체)를 생성해주는 함수이다.
✅ 키워드 - init
✅ 기본 생성자 - 클래스 안에서 init을 따로 선언하지 않아도 init을 호출해 인스턴스 생성이 가능하다.
init() {
}
✅ 생성자 응용
1) 매개변수 없이 기본 생성자를 오버로딩
init() {
self.name = "just do the G"
}
📌 self - 클래스 인스턴스 자기자신을 가리킨다.
2) 인스턴스 생성시 인자를 받아 초기화하도록 기본 생성자를 오버로딩
init(name : String) {
self.name = name
}
📌참고. swift 공식 문서에서는 '오브젝트', '객체'라는 표현보다 '인스턴스' 라는 표현을 사용한다.
✅ 클래스 예시 - Circle1
✅ 클래스 예시 - Circle3
✅ 인스턴스 생성
✏️ 생성자 init 함수를 호출해 Circle1의 인스턴스를 생성하였다.
✏️ Circle1의 경우 클래스 안에서 init을 따로 선언하지 않았지만 init을 이용해 기본 생성자를 호출하여 생성 가능하다.
📌 보통은 생성자 함수 init을 통해 생성하지 않고 circle 방식과 같이 소괄호만으로 생성한다.
✏️ CircleB의 경우 init을 생략하고 매개변수가 radius인 생성자를 호출하여 초기화하였다.
➡️ circleB를 출력해보면 radius를 10.0으로 초기화했으므로 10.0이 출력된다.
✏️ CircleC의 경우 기본 생성자를 호출하였다.
➡️ circleC를 출력하면 radius를 0으로 초기화하는 기본 생성자를 호출했으므로 0이 출력된다.
변수, 상수를 선언하는 방법은 2가지가 있다.
65, "Hello", [2, 4, 6, 8]
자료형 클래스의 init 생성자 함수를 호출해 변수와 상수를 선언할 수 있다.
📌 너무 길면 init을 생략할 수 있다.
65
"Hello"
[2, 4, 6, 8]