클래스 객체 인스턴스 - hwj0623/ios_swift GitHub Wiki

reference

출처1 class-vs-object-vs-instance

출처2

출처3 class-object-instance

객체

real world objects의 2가지 특징은 state(variables)와  behavior(methods)이다. 
  • 객체는 실제 세계의 사물로부터 추상화된 state와 behavior를 지닌다.
    • 함수 : 프로시저의 추상화
    • 구조체, 배열, 포인터 .. : 데이터의 추상화

클래스

사물을 추상화하여 얻은 주요 특징들의 모음. 
template/blueprint
  • 특성과 행위를 정의
  • 정의된 클래스를 실제화하면 특성이 다를 수 있음

인스턴스

  • Object를 표현하는 Class의 고유한 copy를 의미.
  • 클래스의 인스턴스는 OS로부터 메모리 할당을 받아서 실제화 된다.

“객체는 붕어빵(붕어빵의 관념)고, 클래스는 붕어빵틀이고, 인스턴스는 붕어빵틀에 메모리격인 앙금과 재료를 넣어 구체화된 붕어빵”

“구현할 대상 - 객체 객체를 만들기 위한 설계도 - 클래스 구현된 실체 - 인스턴스”

인스턴스 !== 객체

OOP 3가지 특징

캡슐화

  • 데이터(data) 와 데이터를 다루는 방법(operation on data) 을 묶는 것
  • 관련 있는 것을 묶는다 —> 추상화

상속성

  • 하나의 클래스가 가지고 있는 특징들(데이터+조작)을 다른 클래스가 물려받는 것
  • IS-A 관계 (계층관계)
  • 상속 클래스는 기존 클래스와 구분되는 특징만 기술하여 추가
  • 재사용성과 유연성

다형성