클래스(Class)와 객체(Object), 인스턴스(Instance) [스마트인재개발원]
클래스(Class) : 객체를 정의 해 놓은 것
비유를 들자면, blueprint 즉, 청사진이 된다. 설계도의 역할을 해주는 것이 바로 클래스(Class)이다.
객체를 생성하는 데 사용함.
객체(Object) : 클래스에 선언된 모양 그대로 생성된 실체
우리가 주변에서 볼 수 있는, 떠올려 볼 수 있는 실존하는 사물들.. 과일,의자,컴퓨터 등..을 비유로 들 수 있다.
객체(Object)의 정의 : 실제로 존재하는 것, 사물 또는 개념.
객체는 객체가 가지고 있는 기능과 속성에 따라 다르다. (예시로 자동차를 생각해 보자!)
인스턴스(Instance) : 객체를 소프트웨어에 실체화 한 것
실체화된 인스턴스는 메모리에 할당된다.
인스턴스는 객체에 포함된다고 볼 수 있다. 객체가 메모리에 할당되어 실제 사용될 때 '인스턴스'라고 부른다.
추상적인 개념과 구체적인 객체 사이의 관계에 초점을 맞출 경우에 사용한다.
- 객체는 클래스의 인스턴스
- 객체 간의 링크는 클래스 간의 연관 관계의 인스턴스
- 실행 프로세스는 프로그램의 인스턴스
/* 클래스 */
public class Junkfood {
...
}
/* 객체와 인스턴스 */
public class Main {
public static void main(String[] args) {
Junkfood icecream, coke ; // '객체'
// 인스턴스화
icecream = new Junkfood(); // icecream은 Junkfood 클래스의 '인스턴스'(객체를 메모리에 할당)
coke = new Junkfood(); // coke은 Junkfood 클래스의 '인스턴스'(객체를 메모리에 할당)
}
}
이렇게 생각해 보자!
막대 아이스크림을 정의 해 보면,
- 막대에 달려있는 아이스크림
- 달콤하고 시원하다.
- 먹기가 편하다
- 틀 종류에 따라 모양이 다르다.
등의 정의를 내려볼 수 있다.
이때, 이렇게 아이스크림을 떠올리며 생각한 것을 정의해 놓은 것을 클래스(Class)라고 하고, 실제로 아이스크림 틀에 의해 가공되어 만들어진 막대 아이스크림을 객체(Object)라고 한다.
아이스크림 틀 >> 클래스(Class)가 되는 것이고,
막대 아이스크림 >> 객체(Object)가 된다.
스마트인재개발원
4차산업혁명시대를 선도하는 빅데이터, 인공지능, 사물인터넷 전문 '0원' 취업연계교육기관
www.smhrd.or.kr