열렬히.뛰기

객체와 클래스

Language > 프로그래밍 언어 > Java > 객체와 클래스

클래스와 인스턴스

클래스

변수와 함수를 묶어놓은 것을 클래스라고 한다.

  • 클래스 안의 변수를 멤버변수라고 한다.
  • 클래스 안의 함수를 메소드라고 한다.
java
class newclass {
	int x;
	int y;
}
  • 사용자가 정의한 클래스가 있는 반면,
  • 자바에서 기본으로 제공하는 클래스도 있다.

인스턴스

mermaid
graph LR
	클래스 -->|instantiate| 인스턴스
  • 클래스를 실제로 쓸 수 있게 선언한 것을 인스턴스(instance)라고 부른다.
  • 이러한 선언과정을 인스턴스화(instantitate)라고 한다.

예시코드를 보자.

java
class TV {
	int channel;
	channelup();
	channeldown();
}

class test
{
	public static void main(String args[]) {
		TV tv; // TV 클래스 타입의 참조변수 선언
		tv = new tv(); // 연산자 new를 통해 인스턴스 선언
		tv.channelup();
		tv.channeldown();

		TV tv2 = new tv2(); // 참조변수 선언 & 인스턴스 생성
	}
}
  • new 연산자는 인스턴스를 heap 영역에 할당한다.
  • 인스턴스는 참조변수를 통해서만 다룰 수 있다.

인스턴스의 배열

인스턴스의 배열 역시 만들 수 있다.

java
TV[] tvArr = new TV[3];

객체와 객체지향

객체란?

우선 객체의 정의는 다음과 같다.

객체의 정의는 실 세계에서 존재하거나 생각할 수 있는 것을 통틀어서 이야기한다. 가령, 책상, 의자, 자동차 뿐만 아니라, 수강 신청, 수업 등 모두 객체가 될 수 있다.

프로그래밍 관점에서 다시 보자면,

  • 클래스로 생성된 인스턴스가 객체.
  • 객체라는 추상적인 대상을 실제화한 것이 인스턴스라고 생각하자.

객체지향

  • 프로그램의 모든 함수와 변수를 객체 안에 넣었다고 생각해 보자.
  • 이 경우, 프로그램은 객체들의 집합일 것이다.
  • 이러한 방식으로 프로그램을 설계하는 것을 객체지향 프로그래밍(OOP) 라고 한다.

왜 객체지향인가?

  1. 코드의 재사용성이 높다.
    • 함수나 변수를 또 만들지 않고, 이미 있는 클래스에서 가져올 수 있다.
  2. 코드의 관리가 용이하다.
    • 코드 중에서 잘못된 부분이 있다고 하자.
    • 이때, 클래스 중 일부만 고치면 된다.
  3. 신뢰성이 높은 프로그래밍을 가능하게 한다.