[swift개념] 객체와 인스턴스

임혜정·2024년 7월 30일
0

계속 새로운 개념과 기술을 학습해나감에 있어서 객체와 인스턴스라는 말이 자주 등장하는데 정확히 어떤 것을 지칭하는지 다시 한번 짚고 정리.

Swift에서 객체(object)와 인스턴스(instance)는 자주 혼용된다.
그 이유로

  1. 개념이 유사함
    객체와 인스턴스는 Class or struct 를 통해 정의된 데이터와 메소드의 집합을 의미하기 때문이다. 객체 지향 프로그래밍에서는 딱히 엄격한 구분을 두지 않는다. class, struct에 생성된 모든 것을 객체라고 부르기도 하고 인스턴스라 부르기도 한다.

  2. 애매한 용어
    객체,인스턴스가 서로의 정의를 포함하고 있어서 구분 없이 사용될 수가 있다.

    ex)"객체의 메모리 공간에 인스턴스화 되었다"

이게 도대체 무슨 소리란 말인가?
때로 어떤 설명은 차근차근히 단어에 집중하며 읽는 것이 더 혼란스럽다. 이럴 때에는 그냥 객체가 생성되었구나라고 받아들이면 된다.

그 차이가 명확하지 않을 때가 많기 때문에 객체 지향 프로그래밍에 관련하여 객체는 클래스의 인스턴스를 의미하기도 하고 클래스의 구체적 예시인 인스턴스를 의미하기도 한다.


객체와 인스턴스


객체(object) : ~~swift에서는 class 기반으로 생성된 인스턴스, 그리고 인스턴스는 상태를 가질 수 있음

~~ 클래스로 생성된 인스턴스를 객체라 한다. 참조타입이라서.

class Car {
    var color: String
    var speed: Int
    
    init(color: String, speed: Int) {
        self.color = color
        self.speed = speed
    }
    
    func accelerate() {
        speed += 10
    }
}

말 그대로 '정의'인 것.



인스턴스(instance) : 객체의 실체이며, 실제로 메모리에 생성된 개체

let myCar = Car(color: "Red", speed: 0)

myCar라는 상수는 Car클래스의 실체이다. Car 클래스를 통해 정의된 것은 객체이고 myCar로서 실제 생성된 것은 인스턴스이다.

그렇다면 변수와 상수는 이와 무슨 연관을 가지는가?

그 기본정의와 같이 상수는 Car의 변경 불가능한 인스턴스 참조를 가리키며 변수는 변경가능한 인스턴스 참조를 가리킨다.

profile
오늘 배운걸 까먹었을 미래의 나에게..⭐️

0개의 댓글