Languages/Java

[Java]클래스와 객체 그리고 인스턴스와의 차이

MoonSta 2023. 1. 17. 10:06

클래스(Class)

 객체 지향이라는 프로그래밍 패러다임을 가진 JAVA에서는 객체(Object)를 중심으로 프로그래밍을 구성합니다. 객체(Object)의 동작이나 속성들을 구체화 시킨 것이 객체 지향 프로그래밍이기 때문에 객체(Object)는 정말 중요한 요소입니다. 이러한 객체를 만들어 낼 수 있는 틀이 바로 클래스(class)입니다. 클래스(class)라는 틀 안에는 속성(변수), 동작(메서드)으로 구성되어있습니다. 아래 예시를 보며 간단한 클래스(class)를 만들어 보겠습니다. 

 

클래스(Class) 생성

public class Animal { //클래스명 : Animal  
   //속성
   private String name;  //이름  
   private int lifespan; //수명
   //동작
   public void cry() {
  	 ...
   }

 

클래스(Class)와 객체(Object)의 생성

//클래스명 : Animal  
public class Animal {
   //속성
   private String name;  //이름  
   private int lifespan; //수명
   //동작
   public void cry() {
  	 ...
   }
    public static void main(String[] args) {
       //객체 생성 
       Animal tiger, lion;
    }
}

 위의 코드를 보며 클래스(Class)와 객체(Object)에 관계에 대해 알아보도록 하겠습니다. 속성과 동작이 정의된 Animal 클래스가 있습니다. 위의 Animal 클래스를 바탕으로 tiger, lion 객체를 생성하였습니다. 즉, 클래스의 속성, 동작을 바탕으로 실제 생성된 tiger, lion이 객체입니다.

 

 

인스턴스(Instance) 생성

//클래스명 : Animal  
public class Animal {
   //속성
   private String name;  //이름  
   private int lifespan; //수명
   //동작
   public void cry() {
  	 ...
   }
    public static void main(String[] args) {
       //객체 생성 
       Animal tiger, lion;
       
       //Animal 클래스의 인스턴트화
       tiger = new Animal();
       lion = new Animal();
    }
}

 

객체와 인스턴스의 차이?

 클래스(class) 타입이 Animal인 tiger, lion이 두 개의 객체를 생성했다. 하지만 여기까지는 객체의 실체는 없다. 즉, 메모리에 아직 할당 되지 않은 상태이다. 그리고 그 아래에는 new 키워드를 사용함으로써 메모리에 각각의 객체를 할당하였다. 이에 따라 객체의 실체가 만들어진 것이다. 정리하자면 설계도(클래스)로 인하여 만들어진 것은 모두 객체이다. 그 중에서 위의 코드처럼 tiger, lion과 같이 독립적으로 실체를 갖게 된 객체를 인스턴스라고 합니다.