[Java] 클래스(Class) / 객체(Object) / 인스턴스(Instance)

동동·2021년 10월 26일
0

JAVA

목록 보기
5/9
post-thumbnail

📌 클래스(Class)

  • 객체를 만들어 내기 위한 설계도
  • 연관되어 있는 변수와 메서드들의 집합

📌 객체(Object)

  • 소프트웨어 세계에 구현할 대상
  • 클래스에 선언된 모양 그대로 생성된 실체
  • 클래스의 인스턴스(Instance)라고도 부름
  • 하지만 모든 객체가 인스턴스는 아님

📌 인스턴스(Instance)

  • 설계도(클래스)를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체
  • 즉, 객체를 소프트웨어에 실체화하면 그것을 인스턴스라고 부름
  • 실체화된 인스턴스는 메모리에 할당
  • 인스턴스는 객체에 포함됨
  • 차이점은 객체가 메모리에 할당되어 실제 사용될 때 그것을 인스턴스라고 함
  • 인스턴스는 어떤 원본(추상적인 개념)으로부터 생성된 복제본을 의미
  • 따라서 인스턴스라는 용어는 클래스와 객체 사이 관계로 한정지어 사용할 필요 없음

💡 코드로 보는 예시

public class Car {
...
}

public class Main {
	public static void main(String[] args) {
    	Car porsche, ferrari; // 객체 
        
        // 생성자를 사용해 객체를 메모리에 할당 (인스턴스화)
        porsche = new Car(); // porsche는 Car 클래스의 인스턴스 
        ferrari = new Car(); // ferrari는 Car 클래스의 인스턴스 
    }
}

🚧 클래스와 객체와 인스턴스의 차이

  • 클래스는 설계도, 객체는 설계도로 구현한 모든 대상을 의미
  • 객체(Object)와 인스턴스(Instance)의 차이
    • 클래스 타입으로 선언되었을 때 객체, 그 객체가 메모리에 할당되어 실제 사용될 때 인스턴스
    • 객체현실 세계에 가깝고, 인스턴스소프트웨어 세계에 가까움
    • 객체실체, 인스턴스관계에 초점
profile
괴발개발

0개의 댓글