본문 바로가기

Swift

Swift - 클래스(Class)

안녕하십니까.

 

오늘은 클래스(Class)에 대해 공부해보려고 합니다.

 

클래스와 구조체(Struct)를 대조하며 설명하곤 하는데,

 

저는 클래스와 구조체를 게시글을 따로 작성한 후

 

둘을 대조해 보겠습니다.

 

 

1. 클래스(Class)

클래스란 뭘까요?

 

클래스는 청사진이다, 붕어빵 틀(?)이다 등,

 

다양한 설명들을 들어보셨을 거라 생각이 듭니다.

 

다 좋은 설명들이지만 애초에 클래스라는 개념은 왜 생겨났는지,

 

클래스를 사용하면 뭐가 좋은지를 먼저 아는 게 좋다고 생각합니다.

 

초기 코딩의 모습은 어땠을까요?

 

var one: Int = 0
var two: Int = 1

func funtion1() {
	//...
}

func funtion2() {
	//...
}

...

 

초기의 코딩은 변수가 필요하면 변수를 만들고,

 

함수가 필요하면 함수를 만들고...

 

무수히 많은 코드들이 쏟아져 나왔을 거라 생각이 듭니다.

 

이렇게 코드들이 몇천 줄, 몇만 줄이 생긴다면 관리를 어떻게 해야 할까요?

 

이러한 점들을 보안하기 위해 비슷한 기능을 하는 것은 모아두고,

 

코드를 재사용하려는 시도 등,

 

객체지향 프로그래밍의 탄생하였습니다.

 

그렇다 보니 클래스, 구조체, 상속 등 다양한 개념들이 나오게 되었습니다.

 

설명이 길었지만 클래스는 코드의 유지보수의 용의성을 위해 사용합니다.

 

class Person {
    var name: String = "윤수"
    
    func sayHello() {
    	print("Hi!")
    }
}

 

클래스를 사용하기 위해서는 class (클래스명)을 작성한 후,

 

그 안에 변수나 함수를 선언하면 됩니다.

 

이때 클래스 내부에 선언된 변수를 프로퍼티,

 

함수를 메서드라고 부릅니다.

 

class Person {
    var name: String
    
    init() {
    	name = "윤수"
    }
    
    func sayHello() {
    	print("Hi!")
    }
}

 

클래스는 반드시 초기화를 해야 하며,

 

init() 함수를 이용하여 초기화를 할 수도 있습니다.

 

class Person {
    var name: String = "윤수"
    
    func sayHello() {
    	print("Hi!")
    }
}

var p1: Person = Person()

p1.sayHello()
//Hi!

 

클래스를 사용하기 위해서는 이처럼 객체를 만들어주어야 하고,

 

클래스 내부의 프로퍼티나, 함수 등을 사용할 수 있습니다.

 

 

2. 참조타입(Reference Type)

클래스는 참조타입(Reference Type)입니다.

 

참조 타입이란 클래스가 저장된 실제 메모리 주소를 참조한다는 뜻입니다.

 

class Person {
    var name: String
    
    init(name: String) {
        self.name = name
    }
}

var p1 = Person(name: "윤수")
var p2 = p1

p2.name = "철수"

print(p1.name) // 철수

 

이런 식으로 p1, p2가

 

Person 클래스의 주소 값을 참조하므로

 

p2의 변동은 p1에도 반영되는 것을 볼 수 있습니다.

 

 

3. 상속(Inheritance)

클래스의 큰 특징으로는 상속(Inheritance)이 있습니다.

 

상속의 상위 클래스의 정보를 하위 클래스가 사용하는 것입니다.

 

class Person {
    var name: String
    
    init(name: String) {
        self.name = name
    }
    
    func printName() {
    	print(name)
    }
}

class Student: Person {
    var age: Int = 20
    
    func printAge() {
    	print(age)
    }
}

let student = Student(name: "윤수")

student.printName() // 윤수
student.printAge()  // 20

 

상속을 하기 위해서는

 

(클래스명): (상속받을 클래스) 이렇게 표기하여 사용하며

 

Student 클래스는 Person 클래스의 프로퍼티, 메서드 등에 접근하여 사용할 수 있습니다.

'Swift' 카테고리의 다른 글

Swift - 1급 객체(First-Class Object)  (0) 2026.04.03
Swift - 옵셔널(Optional)  (0) 2026.03.27
Swift -Async Await  (0) 2026.03.26
Swift - Generic  (0) 2026.02.27
Swift - ARC(Automatic Reference Counting)  (0) 2026.02.26