본문 바로가기
쿤즈 Dev/Java

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

by :)Koon 2023. 8. 24.

지난 포스팅에서는 자바를 사용하기 위해서는 반드시 알아야 하는 클래스의 개념에 대해서 알아보았다. 그리고 중간중간 객체라는 말을 사용하면서 클래스와 함께 사용했다. 그리고 추가적으로 인스턴스라는 말도 존재한다. 이 말들은 서로 어떻게 다를까?

이번 포스팅에서는 클래스(Class), 객체 (Object), 인스턴스(Instance)에 대해서 각각 알아보자.


클래스 (Class)

클래스는 객체를 생성하기 위한 청사진 혹은 틀이다. 쿠키를 만들기 위해서 반죽을 하고 어떤 모양의 틀을 이용해서 반죽을 똑같이 찍어낼 수 있다. 이때 똑같이 찍어낼 수 있는 이 틀을 클래스라 생각해면 된다.

 

이 틀 내부는 동일한 양의 반죽이 들어갈 수도 있고 서로 다른 반죽을 만들어 동일한 틀로 찍어낼 수 있다. 즉 모양이나 형태는 동일하지만 내용물이 다를 수 있다는 것이다. 클래스도 마찬가지다. 클래스의 멤버변수, 멤버 메서드 (속성)를 정의하고 이름은 동일하지만 멤버 변수의 값은 모두 같거나 다를 수 있다.

 

클래스는 추상적인 개념이며, 실 제 데이터를 포함하지 않는다. 자바에서는 'class' 키워드를 사용하여 정의하며 객체 생성을 위한 구조를 제공한다.

 

인스턴스 (Instance)

인스턴스는 클래스를 기반으로 생성된 구체적인 개체를 의미한다. 객체와 인스턴스는 종종 혼용되어 사용하지만, 보다 엄격한 의미로는 객체는 클래스의 인스턴스를 나타낸다. 따라서 객체와 인스턴스는 동의어처럼 쓰일 수 있다.

 

객체 (Object)

객체는 클래스의 인스턴스를 의미한다. 클래스를 기반으로 만들어진 실제 데이터이며 메모리에 할당되고, 해당 클래스에서 정의된 메서드를 실행할 수 있는 실체이다. 따라서 실제 값(멤버 변수)과 실제 동작(멤버 메서드)을 가진다.


클래스와 객체에 대한 예제

앞선 포스팅에서 클래스를 만드는 예제를 통해 다시 한 번 살펴보자.

2023.08.23 - [쿤즈 Dev/Java] - [Java] 클래스(Class)에 대해서 알아보자

public class Person {
    // 멤버 변수
    private int age;
    private String name;

    // 생성자
    public Person() {
        this.age = 100;
        this.name = "이름없음";
    }

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

    // 메서드
    public void showIntroduce(){
        System.out.println("내 이름은 " + name +", 나이는 " + age + "이다.");
    }
}

public class PersonTest {
    public static void main(String[] args) {
        Person person1 = new Person();
        Person person2 = new Person(30, "koonsland");

        // person2.age = 30; // 접근 불가

        person1.showIntroduce();
        person2.showIntroduce();;
    }
}

위의 예시에서 'Person' 클래스는 사람의 속성과 동작을 정의하는 데 사용되었다. 그리고 main 메서드에서 person1과 person2는 클래스의 인스턴스 또는 객체이다. 인스턴스가 생성된 후에는 showIntruduce() 메서드를 호출하여 객체의 동작을 수행할 수 있다.


이번 포스팅에서는 우리나라말로 번역된 단어중 혼돈을 줄 수 있는 세 단어에 대해서 알아보았다. 클래스, 객체, 인스턴스는 실무에서도 자주 사용하는 말이니 잘 기억하고 있으면 좋다.

댓글