[JAVA] 객체와 클래스, 인스턴스

LaStella·2023년 2월 4일
0

📌객체(Object)

넓은 의미로 객체는 현실에서 존재하거나 생각할 수 있는 것을 말합니다. 자동차, 사람과 같이 물리적으로 존재하는 것과 강의, 주문과 같이 추상적으로 존재하는 것 모두 객체가 될 수 있습니다.
실제 현실에서의 객체와 비교하면 2가지 주요한 형질을 공통적으로 가지는데 바로 상태(또는 속성)행동(또는 기능)입니다. 예를 들어 사람은 나이나 이름과 같은 상태를 가지며, 달리거나 잠자는 행동을 할 수 있습니다. 자바에서는 이러한 상태(속성)를 필드(field), 행동을 메소드(method)로 나타냅니다.


📌클래스(Class)

객체를 구현해야할 대상이라면 클래스는 객체를 생성하기 위한 설계도라고 할 수 있습니다.
객체로 만들 대상의 특징(상태)이나 기능(행동)을 잘 나타내도록, 개념적으로 분류(classification)정의 하는 것이 클래스입니다.
클래스는 필드와 메소드, 생성자로 구성됩니다.

  • 필드 : 객체의 상태(또는 속성)를 설정
  • 생성자 : 처음 객체 생성 시, 객체 초기화를 담당하는 역할
  • 메소드 : 객체의 행동(또는 기능, 동작)

객체(사람)를 클래스로 나타낸 예

public class Person{
    // 필드(field)
    String name;
    int age;
    
    // 생성자(constructor)
    Person(String name, int age){
        this.name = name;
        this.age = age;
    }
    
    // 메소드(method)
    void run(){
        System.out.println(name + "가 달립니다.");
    }
    
    void sleep(){
        System.out.println(name + "가 잠을 잡니다.");
    }
}

📌인스턴스(Instance)

정의된 클래스(설계도)를 바탕으로 객체를 실체화한 것을 인스턴스라고 합니다. 클래스를 통해 힙(Heap)메모리 영역에 인스턴스가 생성되며 이러한 인스턴스를 만드는 과정을 인스턴스화라고합니다.

public class PersonTest{
    public static void main(String[] args){
        // 인스턴스 생성
        Person person1 = new Person("김철수", "26"); 
        Person person2 = new Person("이영희", "22");
       	
        person1.run();
        person2.run();
        
        person1.sleep();
    	person2.sleep();
    }
}

❓객체와 인스턴스는 같은가?

Person클래스로부터 만들어진 person1객체라고 표현하듯이 person1은 객체이며 인스턴스입니다. 이는 같은 말처럼 보이지만 객체는 인스턴스를 포괄하는 개념 (인스턴스⊂객체)으로 인스턴스는 특정 클래스로부터 메모리에 실체화된 특정 객체를 말합니다. 따라서 person1인스턴스와 person2인스턴스는 모두 객체입니다.


📝요약

예를 들어 붕어빵을 만든다고 가정한다면 구현해야할 대상, 즉 객체는 붕어빵이며 붕어빵을 만드는 틀(설계도)은 클래스입니다. 그리고 붕어빵틀을 통해 만들어진 팥붙어빵, 슈크림붕어빵은 인스턴스가 됩니다.


💡참고글

Class vs Object vs Instance - Alfred’s Computing Weblog
13편. 객체와 클래스(Objects and Classes) - LAYER6AI의 끝나지 않는 프로그래밍 일기
객체와 클래스, 그리고 인스턴스의 차이 - 코디빌더
도대체 객체가 뭔데? : 객체, 클래스, 인스턴스 - 오늘이라도 upcake_

profile
개발자가 되어가는 중...

0개의 댓글