티스토리 뷰

JAVA

TIL (5) 클래스, 객체, 인스턴스

나죽나강 2021. 5. 26. 20:57

# 목적

클래스, 객체(Obejct), 인스턴스(Instance)의 개념과 차이점에 대해 이해한다.

 

# 클래스, 객체, 인스턴스의 개념
# 클래스(Class) 란
> 객체를 만들어 내기 위한 설계도 혹은 틀
> 연관되어 있는 변수(상태)와 메서드(기능)의 집합

 

# 객체(Object) 란
> 소프트웨어 세계에 구현할 대상
> 클래스에 선언된 모양 그대로 생성된 실체

> oop의 관점에서 클래스의 타입으로 선언되었을 때 ‘객체’라고 부른다.

 

# 인스턴스(Instance) 란
> 객체를 소프트웨어에 실체화 하면 그것을 ‘인스턴스’라고 부른다.
> 실체화된 인스턴스는 메모리에 할당된다.
> 인스턴스는 객체에 포함된다고 볼 수 있다.
> oop의 관점에서 객체가 메모리에 할당되어 실제 사용될 때 ‘인스턴스’라고 부른다.

 

/* 클래스 */
public class Animal {
  ...
}

/* 객체와 인스턴스 */
public class Main {
  public static void main(String[] args) {
    Animal cat, dog; // '객체'

    // 인스턴스화
    cat = new Animal(); // cat은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)
    dog = new Animal(); // dog은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)
  }
}

Q1 ). 아래와 같은 구문은 변수명 c1의 데이터 타입이 무엇이라는 의미일까?

Q2 ). 데이터 타입을 선언했으면 다 객체가 되는 것일까?

 

Calculator c1

 

A1 ). Calculator라는 의미다. 즉 클래스를 만든다는 것은 사용자 정의 데이터 타입을 만드는 것과 같은 의미다. 클래스를 인스턴스화 할 때는 변수에 담아야 한다는 것과 이 때 사용하는 변수의 데이터 타입은 그 클래스가 된다는 점이다.

 

클래스를 단순히 변수와 메소드의 묶음으로 보면 부족하다. 우리가 객체를 만들어서 사용하는 이유는 재활용성을 높이기 위해서다.

 

/** 생활코딩 강의 참조*/

https://opentutorials.org/course/1223/5400 

하나의 클래스를 바탕으로 서로 다른 상태를 가진 인스턴스를 만들면 서로 다른 행동을 하게 된다는 것을 알 수 있다. 하나의 클래스가 여러개의 인스턴스가 될 수 있다는 점이 객체 지향이 제공하는 가장 기본적인 재활용성이라고 할 수 있다.

 

 

# 인스턴스 

> 추상적인 개념과 구체적인 객체 사이의 관계 에 초점을 맞출 경우에 사용한다.

> 객체는 클래스의 인스턴스다.

> 객체 간의 링크는 클래스 간의 연관 관계의 인스턴스다.
> 실행 프로세스는 프로그램의 인스턴스다.
> 즉, 인스턴스라는 용어는 반드시 클래스와 객체 사이의 관계로 한정지어서 사용할 필요는 없다.
> 인스턴스는 어떤 원본(추상적인 개념)으로부터 ‘생성된 복제본’을 의미한다.

 

# 객체(Object) VS 인스턴스(Instance)
> 클래스의 타입으로 선언되었을 때 객체라고 부르고, 

>그 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부른다.

 

> 객체는 현실 세계에 가깝고, 인스턴스는 소프트웨어 세계에 가깝다.
> 객체는 ‘실체’, 인스턴스는 ‘관계’에 초점을 맞춘다.

 


# 객체와 추상화

Q. 객체와 추상화의 관계에 대해 생각해 보자!
> 1. 분류(Classification)
객체 -> 클래스
실재하는 객체들을 공통적인 속성을 공유하는 범부 또는 추상적인 개념으로 묶는 것

 

> 2. 인스턴스화(Instantiation)
클래스 -> 인스턴스
분류의 반대 개념. 범주나 개념으로부터 실재하는 객체를 만드는 과정
구체적으로 클래스 내의 객체에 대해 특정한 변형을 정의하고, 이름을 붙인 다음, 그것을 물리적인 어떤 장소에 위치시키는 등의 작업을 통해 인스턴스를 만드는 것을 말한다.

 /**

참조 사이트 (References)

https://gmlwjd9405.github.io/2018/09/17/class-object-instance.html

*/

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함