자바 프로그래밍을 처음 배우기 시작하면 "클래스", "객체", "인스턴스"라는 용어를 접했다. 이 세 가지 개념은 객체 지향 프로그래밍(OOP)의 기본 개념으로, 자바를 이해하는 데 매우 중요하다고 한다. 이 글에서는 이 세 가지 용어의 차이점과 각 용어의 의미를 알아보자.
#자바 상에서 적용해보기
# 클래스를 기반으로 한 속성들
public class Person {
String name :
String IQ :
String str :
# 생성자 constructor
public Person(String name, int IQ, int str){
this.name = name;
this.IQ = IQ;
this.str =str;
}
public Person(){
this.name ="유재석"
this.IQ = 150;
this.str = 100;
}
// 메서드
public void levelup(){
this.IQ = this.IQ + 1;
this.str = this.str + 1;
System.out.println(this.name + "의 지능과 힘이 증가!" + this.IQ + "/" + this.str);
}
public static void main(String[] args) {
person a = new person(); # 객체 -> 인스턴스
a.levelup();
person b; #객체
b = new person ("홍철",1,300); # 인스턴스
b.levelup();
}
}
1. 클래스 (Class)
클래스는 객체의 설계도라고 할 수 있다. 클래스는 객체를 생성하기 위한 틀을 제공하며, 객체가 가져야 할 속성과 동작을 정의한다. 예를 들어, '사람' 이라는 클래스를 만든다면, 이 클래스는 사람이 가져야 할 속성(예: 지능, 힘,)과 동작(예: 학습, 인성 등)을 정의할 수 있습니다.
클래스는 실제 데이터를 가지지 않으며, 객체를 만들기 위한 구조를 정의할 뿐이다. 다시 말해, 클래스 자체는 메모리에 할당되지 않는다. 클래스는 데이터와 메서드를 포함하여 객체의 행동과 상태를 정의하는 일종의 '틀' 이다.
2. 객체 (Object)
객체는 클래스의 인스턴스입니다. 클래스라는 설계도를 기반으로 실제 메모리에 할당되어 존재하는 실체가 바로 객체이다. 객체는 클래스에서 정의한 속성과 동작을 실제로 가지고 있는 상태로 존재한다.
예를 들어, person 클래스를 기반으로 만든 person b 라는 객체는 실제로 메모리에 할당되어 있으며, IQ와 str 이라는 속성 값을 가질 수 있다. 객체는 현실 세계의 사물이나 개념을 프로그래밍으로 구현한 것이라고 할 수 있다
3. 인스턴스 (Instance)
인스턴스는 특정 클래스의 객체를 의미합니다. 즉, 인스턴스는 "클래스의 구체적인 사례"라고 할 있다. Person b는 person 클래스의 객체이며, 동시에 person 클래스의 인스턴스입니다. 객체와 인스턴스는 거의 같은 의미로 사용되지만, 문맥에 따라 구분될 수 있다. 일반적으로 '객체'는 보다 광범위하게 사용될 수 있는 용어인 반면, '인스턴스'는 특정 클래스에서 생성된 객체를 강조할 때 사용된다.
자바에서 이 세 가지 개념을 명확히 이해하는 것은 객체 지향 프로그래밍을 잘 활용하는 데 있어 필수적라고 한다. 클래스는 설계, 객체는 실체, 인스턴스는 그 실체의 예라고 생각하면 이 세 용어를 보다 쉽게 구분할 수 있을 것이라고 한다.