[기본 개념] 1 | (1.1) 클래스와 객체
1> 클래스와 객체의 정의 & 용도
2> 객체와 인스턴스
3> 객체의 구성요소 (속성 & 기능)
4 인스턴스 생성 & 사용
5 객체 배열
6 클래스의 또 다른 정의
1. 클래스와 객체의 정의 & 용도
클래스의 정의 : 객체를 정의해 놓은 것, 객체의 설계도
클래스의 용도 : 객체를 생성하는 데 사용
객체의 정의 : 실제로 존재하는 것, 사물 또는 개념
객체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다름
ㄴ 객체는 사물과 같은 유형의 객체, 공식이나 논리 같은 무형의 객체가 있다.
예를 들어, TV설계도(클래스)로 만든 TV(객체)을 만들 수 있다. 하지만 TV설계도(클래스)는 단지 TV(객체)를 만드는데만 쓰이며, TV설계도(클래스)를 통해 TV(객체)이 만들어진 후 사용할 수 있다.
클래스 | 객체 |
TV 설계도 | TV |
제품 설계도 | 제품 |
붕어빵 기계 | 붕어빵 |
하나의 설계도만 잘 만들어 놓으면 제품을 만드는 일이 쉬워진다. 마찬가지로 클래스를 한 번만 잘 만들어 놓기만 하면, 매번 객체를 생성할 때마다 객체를 어떻게 만들어야 하는지 고민하지 않아도 된다.
JDK(Java Development Kit)에서는 프로그래밍을 위해 많은 수의 유용한 클래스(Java API)를 기본적으로 제공하고 있으며 이를 통해 원하는 기능의 프로그램을 보다 쉽게 작성할 수 있다.
2. 객체와 인스턴스
클래스로부터 만들어진 객체 ㄱ
클래스 → (인스턴스화) → 인스턴스(객체)
ㄴ 클래스로부터 객체를 만드는 과정
예를 들어, TV클래스로부터 만들어진 객체를 TV클래스의 인스턴스라고 한다.
3. 객체의 구성요소 (속성 & 기능)
일반적으로 객체는 다수의 속성과 다수의 기능을 갖는다. 즉, 객체는 속성과 기능의 집합이라고 하는데 객체가 가지고 있는 속성과 기능을 그 객체의 멤버라 한다.
클래스란 객체를 정의한 것이므로 클래스에는 객체의 모든 속성과 기능이 정의되어있다. 따라서 클래스에 정의된 속성과 기능을 가진 객체가 만들어지는 것이다.
속성(property) > 멤버변수(member variable), 특성(attribute), 필드(field), 상태(state)
기능(function) > 메서드(method), 함수(function), 행위(behavior)
보다 쉽게 이해하기 위해 TV를 에로 들어보자. TV의 속성으로는 전원상태, 크기, 길이, 높이, 색상, 볼륨, 채널과 같은 것들이 있으며, 기능으로는 켜기, 끄기, 볼륨 높이기, 채널 변경하기 등이 있다.
TV 속성 | 크기, 길이, 높이, 색상, 볼륨, 채널 등 |
TV 기능 | 켜기, 끄기, 볼륨 높이기, 볼륨 낮추기, 채널 변경하기 등 |
이를 토대로 tv클래스를 만들어 보면 다음과 같다.
class Tv {
String color; // 색깔 - 변수
boolean power; // 전원상태 - 변수
int channel; // 채널 - 변수
void power() {
power = !power; // 끄기, 켜기 - 메서드
}
void channelUp() {
channel++; // 채널 올리기 - 메서드
}
void channelDown() {
channel--; // 채널 내리기 - 메서드
}
}
[참고] 일반적으로 멤버변수를 먼저 선언하고, 멤버변수는 멤버변수끼리 메서드는 메서드끼리 모아 놓는 것이 좋다.
각 변수의 자료형은 속성의 값에 알맞은 것을 선택해야한다. 전원상태(power)의 경우, on과 off 두가지 값을 가지는 boolean형으로 선언하였다.
출처 | Java의 정석 (남궁 성)
'💠프로그래밍 언어 > Java' 카테고리의 다른 글
[기본 개념] 1 | (2.3) 메서드 호출, RETURN 문 (0) | 2021.08.18 |
---|---|
[기본 개념] 1 | (2.2) 메서드 선언/구현 (0) | 2021.08.17 |
[기본 개념] 1 | (2.1) 선언 위치에 따른 변수 종류, 클래스/인스턴스 변수 (0) | 2021.08.17 |
[기본 개념] 1 | (1.3) 객체 배열, 클래스의 정의 (0) | 2021.08.11 |
[기본 개념] 1 | (1.2) 인스턴스 생성 (0) | 2021.08.10 |