클래스, 객체 , 인스턴스 개념

2020. 11. 9. 10:49Backend/☕️ Java

클래스(class)

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

객체(object)

  • 소프트웨어 상에 구현할 대상
  • 클래스라는 '설계도, 틀'에서 선언된 모양으로 생성된 실체
  • 모든 객체는 클래스로부터 생성된다.

인스턴스(instance) <속성(변수), 기능(메서드) ⊂ 인스턴스>

  • 클래스를 바탕으로 소프트웨어에 구현된 '변수'와 '기능'의 집합 (구체적 실체)
  • 즉, 객체를 소프트웨어에 실체화 하면 '인스턴스'라 칭함 => 인스턴스 ⊂ 객체 (인스턴스를 포함)
  • 고유한 상태를 가지기 위해 존재, 속성(멤버 변수)과 기능(메서드)이라 생각하자

객체 vs 인스턴스

  • 클래스의 타입으로 선언됐을 때 객체라 부르고, 해당 객체가 메모리에 할당되어 실제로 사용될 때 인스턴스라 부른다.
    (하지만 엄격하게 객체와 인스턴스를 나누긴 어렵다.)
// class
public class Person {
    ...
}

// 객체와 인스턴스
public class Main {
    public static void main(String[] args) {
    Person female, male; // 객체

    // 인스턴스화
    female = new Person(); //female은 Person 클래스의 '인스턴스' (female 객체를 메모리에 할당)
    male = new Person(); //male은 Person 클래스의 '인스턴스' (male 객체를 메모리에 할당)
    }
}

인스턴스화

  • 클래스를 인스턴스로 변환
  • 범주나 개념(클래스)으로부터 실재하는 객체를 만드는 과정
  • 클래스 내의 객체를 정의하고 이름을 붙인 다음, 메모리를 할당하는 등의 작업으로 인스턴스를 만드는 것을 의미
Person female = new Person(); //female은 Person 클래스의 '인스턴스' (female 객체를 메모리에 할당)
Person male = new Person(); //male은 Person 클래스의 '인스턴스' (male 객체를 메모리에 할당)
  • 연산자 new에 의해 Person 클래스의 인스턴스가 메모리의 빈 공간에 생성된다.
  • 대입 연산자 '=' 에 의해 생성된 인스턴스의 주소값이 참조변수 male, female이 참조변수 Person에 저장(인스턴스화)
  • 즉, 참조변수 male, female에 의해 인스턴스의 '멤버변수'와 '메서드'를 사용할 수 있게 된다.

예시

public class this_prac {
    public static void main(String[] args) {

        class ThisEx01{
            int kor, eng;

            ThisEx01 (int kor, int eng){
                this.kor = kor;
                this.eng = eng;
            }    
        }

        ThisEx01 obj1 ; // ThisEx01 클래스의 객체: obj1

        obj1 = new ThisEx01(90, 100); // 객체의 인스턴스화

        System.out.println(obj1.kor);
        System.out.println(obj1.eng);    
    }
}

참고