☕ Java

클래스(Class) vs. 객체(Object) vs. 인스턴스(Instance)

dmaolon 2022. 7. 18. 09:08

📌클래스(Class)

클래스란, 객체를 만들어 내는 설계도 혹은 틀이다.
서로 연관되어 있는 변수, 메서드의 집합이다.

class Animal {

	// 변수
	String name;
	int age;

	// 메서드
	void run(){
		System.out.println(name + "달려");
	}
	void eat(){...}
}

 

❕ 클래스의 구성

class 키워드를 이용하여 선언한다.
필드 = 멤버 변수
캡슐화의 원칙으로 클래스 외부에 어떤 변수나 메서드가 위치해서는 안된다.
캡슐화 : 캡슐로 감싸서 내부를 보호하듯이, 외부로부터의 접근을 막아서 안전하게 보호하는 것


📌객체(Object)

실세계에서 우리 주변에 있는 TV, 책, 의자, 사람 등 모든 것이 객체이다.
객체는 자신만의 고유한 상태와 행동을 가지며 서로 상호작용하며 존재한다.
이러한 객체는 클래스로부터 생성된다.
자신만의 고유한 상태인 필드(멤버 변수)와 행동인 메서드(멤버 함수)로 구성된다.
 

❕ 객체의 생성

Animal rabbit = new Animal();

- 레퍼런스 변수

Animal rabbit;

이렇게만 선언해두면, 객체가 생성되지 않고, 레퍼런스를 가지는 변수만을 선언한 것이다.
- 객체 생성

rabbit = new Animal();

객체의 주소를 rabbit이라는 레퍼런스 변수에 담아준다.

 

String name = "토끼";
int age = 2;

void run(){...}
void eat(){...}
String name = "거북이";
int age = 40;

void run(){...}
void eat(){...}

동물 클래스를 통해 생성된 토끼 객체와 거북이 객체이다.
 

❓다형성(Polymorphism)

동일한 클래스를 통해 객체를 생성했으나, 각 객체마다의 고유한 상태와 행동으로, 객체에 따라서 다르게 동작하는 것을 다형성이라고 한다.
객체는 클래스의 인스턴스라고도 부른다.


📌 인스턴스

설계도를 바탕으로 구현된 구체적인 실체를 의미한다.
인스턴스는 객체에 포함되는 개념이다.
객체가 메모리에 할당되어 실제로 사용이 가능할 때 이것을 인스턴스라고 부른다.
 
붕어빵 틀 ⇒ 클래스
붕어빵 ⇒ 객체
팥 붕어빵, 슈크림 붕어빵 ⇒ 인스턴스
보통 선언되었을 때를 객체라 하며, 메모리에 할당되어 사용될 때를 인스턴스라 한다.
 

☑️ 마무리

클래스랑 객체는 무엇인가요?

클래스란 객체를 만들어내는 설계도라 할 수 있으며, 연관된 변수와 메서드를 모아둔 집합이라 할 수 있습니다. 객체는 이러한 클래스를 통해 생성되며, 고유한 상태와 행위를 지니고 있으며, 클래스의 인스턴스라고 할 수 있습니다.
 

인스턴스는 무엇인가요?

인스턴스란 객체에 포함되는 개념으로, 객체가 구체적으로 구현된 실체를 의미합니다. 메모리 영역 중 힙 영역으로 메모리가 할당되어 사용이 가능한 상태를 인스턴스라고 할 수 있습니다. 따라서 인스턴스를 모두 통칭하여 객체라고 합니다.
 

객체 지향 프로그래밍

캡슐화, 상속, 다형성 등을 통해 소프트웨어의 재사용성을 높여 생산성을 향상시킬 수 있다.
실세계에 존재하는 것을 객체로 표현하여 상호 작용을 설계하여 절차 지향보다 간편하게 구현이 가능하다.

반응형