클래스와 객체
클래스와 객체를 설명하는 예시로 여러 예시가 있습니다.
- 게임 비유 : 클래스(직업)에 따라 클래스(직업)에 맞는 아이템과 동작들이 주어져서 객채가 생성되는 것.
- 붕어빵 비유 : 클래스라는 모형틀(붕어빵틀)을 만들고 팥을 넣고 구워 객채(붕어빵)를 만든다.
이러한 예시를 보고 클래스와 객체가 무엇인지 아래 설명을 본다면 좀 더 이해가 쉬울 겁니다.
클래스
클래스란 "객체를 정의해놓은 것" 또는 "객체의 설계도 또는 틀"이라고 정의할 수 있습니다.
클래스는 객체를 생성하는데 사용되며, 객체는 클래스에 정의된 대로 생성됩니다.
- 클래스의 정의 : 객체를 정의해 놓은 것
- 클래스의 용도 : 객체를 생성하는데 사용
객체
객체는 "실제로 존재하는 것"으로 우리가 주변에서 볼 수 있는 책상, 의자, 컴퓨터와 같은 사물들을 곧 객체라고 할 수 있습니다.
프로그래밍에서의 객체는 클래스에 정의된 내용대로 메모리에 생성된 것을 뜻합니다.
- 객채의 정의 : 실제로 존재하는 것, 사물 또는 개념
- 객체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다르다.
인스턴스
인스턴스란, 클래스로부터 객체를 만드는 과정을 클래스의 인스터스화라고 하며,
클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 합니다.
class Tv {
// Tv의 속성(멤버변수)
String color; // 색상
boolean power; // 전원상태(on/off)
int channel; // 채널
// Tv의 기능(메서드)
void power() { power = !power; } // TV를 켜거나 끄는 기능을 하는 메서드
void channelUp() { ++channel; } // TV의 채널을 높이는 기능을 하는 메서드
void channelDown() { --channel; } // TV의 채널을 낮추는 기능을 하는 메서드
}
위 처럼 Tv 클래스가 있다고 가정합시다.
Tv 클래스를 선언한 것은 Tv설계도를 작성한 것에 불과하므로 Tv인스턴스를 생성해야 Tv를 사용할 수 있습니다.
인스턴스는 다음과 같이 생성할 수 있습니다.
클래스명 변수명 = new 클래스명();
Tv t = new Tv();
Example Code
class Tv {
// Tv의 속성(멤버변수)
String color; // 색상
boolean power; // 전원상태(on/off)
int channel; // 채널
// Tv의 기능(메서드)
void power() { power = !power; } // TV를 켜거나 끄는 기능을 하는 메서드
void channelUp() { ++channel; } // TV의 채널을 높이는 기능을 하는 메서드
void channelDown() { --channel; } // TV의 채널을 낮추는 기능을 하는 메서드
}
class TvTest {
public static void main(String args[]) {
Tv t; // Tv인스턴스를 참조하기 위한 변수 t를 선언
t = new Tv(); // Tv인스턴스를 생성한다.
t.channel = 7; // Tv인스턴스의 멤버변수 channel의 값을 7로 한다.
t.channelDown(); // Tv인스턴스의 메서드 channelDown()을 호출한다.
System.out.println("현재 채널은 " + t.channel + " 입니다.");
}
}
Tv 클래스를 생성하고 그 클래스 안에는 Tv의 속성과 Tv의 기능인 메서드가 포함되어있습니다.
( 메서드에 void가 붙으면 return; 반환을 생략 가능합니다 )
메인 클래스인 TvTest에 Tv 클래스를 이용해 t라는 객체를 생성하고 그 객체의 채널은 7로 지정하고, channelDown() 메서드를 통해 채널을 -1 하여 "현재 채널은 6 입니다." 라고 출력이 되었습니다.
이번 포스팅에는 자바의 클래스와 객체에 대해 간단하게 알아보았습니다.
다음 포스팅에서는 클래스 변수, 인스턴스 변수, 클래스 메서드, 인스턴스 메서드에 대해 다뤄보려 합니다.
클래스 변수와 인스턴스 변수
클래스 메서드와 인스턴스 메서드
참고자료
자바의 정석3
'◼ JAVA' 카테고리의 다른 글
[Java/자바] 메서드(Method)란 ? (1) | 2022.10.19 |
---|---|
[Java/자바] 클래스 변수, 인스턴스 변수, 지역 변수란? (1) | 2022.10.18 |
(Java/자바) System.arraycopy()를 이용해 배열 복사 (1) | 2022.10.14 |
[Java/자바] 연산자의 모든 것 (0) | 2022.10.13 |
[Java/자바] StringBuilder 클래스란 ? (0) | 2022.10.13 |