[Java] 클래스, 오브젝트, 인스턴스

클래스, 오브젝트, 인스턴스

객체지향에서의 클래스, 오브젝트, 인스턴스가 무엇인지 알아본다.

특징

  • Class(클래스) : 객체를 만들기 위한 설계도
  • Object(오브젝트) : 클래스 중 실체화가 가능한 것!
  • Instance(인스턴스) : 오브젝트를 실체화한 것

구분

클래스는 객체를 설계하기 위한 설계도라고 할 수 있다.
클래스를 다시 나누면 실체화할 수 있는 class와 추상적인 설계도인 abstract class가 존재한다.
이때 실체화할 수 있는 클래스를 오브젝트라고 부르고, 실체화한 것을 인스턴스라고 부른다.

동물을 예로 들어보자.
동물이라는 개념은 우리 머릿속에 존재하고 구별이 되지만, 실제 세상에선 동물이라는 것은 실체화되어 존재하지 않는다.
들판을 뛰어다니는 말을 상상할 순 있지만, 들판을 뛰어다니는 동물은 상상할 수 없다.
이를 객체지향으로 가져오면, 동물이라는 것은 생물계에서 식물에 대응하는 생물군을 설계하기 위한 클래스이고, 실체화할 수 있는 것들 소, 말, 돼지 등등은 오브젝트이다.
말이라는 오브젝트가 실체화돼서 들판을 뛰어다닌다면 그것이 실체화된 인스턴스가 된다.

class Horse extends Animal{ ..}

자바의 구현에서는 설계도인 동물을 말이 상속받고 동물의 고유한 속성(메서드)를 구현하고 말을 구현할 때 필요한 속성과 특성을 구현하여 말이라는 오브젝트를 만든다.

Horse horse = new Horse();

생성자를 이용해 위에서 만든 오브젝트를 실체화시켜 인스턴스를 생성할 수 있다.