현실 세계에서는 종종 같은 종류의 많은 개별 객체를 찾을 수 있다.
예를 들어, 동일한 제조사와 모델을 가진 수천 개의 다른 자전거가 존재할 수 있다.
각 자전거는 동일한 설계도 세트로 제작되었으므로 동일한 구성 요소를 포함한다. (고성능 바퀴 2개, 가죽 핸들 1개 등등..)
객체 지향 관점에서, 우리는 그 많은 동일한 자전거들 중 하나, 즉, 나의 자전거라고 말할 경우를
객체의 -> 클래스의 -> 인스턴스라고도한다.
클래스는 개별 객체가 생성되는 청사진(설계도), 혹은 프로토 타입이다.
다음 Bicycle class는 자전거라는 객체의 가능한 구현 중 하나이다.
class Bicycle {
int cadence = 0; // 현재 속도
int speed = 0; // 속력
int gear= 1; // 기어
void changeCadence (int newValue) { //void -> 반환 타입이 없는 메소드
cadence = newValue;
}
void changeGear (int newValue) {
gear = newValue;
}
void speedUp (int increment) {
speed = speed + increment;
}
void applyBrakes (int decrement) {
speed = speed - decrement;
}
void printStates () {
System.out.println ( "cadence :"+ cadence + "speed :"+ speed + "gear :"+ gear );
}
}
Java 프로그래밍 언어의 구문은 새로운 것처럼 보이지만,
이 클래스의 디자인은 자전거 객체에 대한 이전 논의를 기반으로 한다. (이전 포스팅 참고)
필드는 cadence, speed, 및 gear객체의 상태를 나타내며, 방법은 ( changeCadence, changeGear, speedUp등) 외부 세계와의 상호 작용을 정의한다.
여기서 새로운 Bicycle 객체를 만들고 사용하는 것은 응용 프로그램의 다른 클래스가 행한다. (main 메소드가 없으므로)
다음 BicycleDemo class는 두 개의 개별 Bicycle 객체를 만들고 해당 메서드를 호출하는 클래스이다 .
class BicycleDemo {
public static void main (String [] args) {
// 두 개의 다른 자전거 객체 생성
Bicycle bike1 = new Bicycle (); //Bicycle class를 사용하여 bike1객체 생성.
Bicycle bike2 = new Bicycle (); //Bicycle class를 사용하여 bike2객체 생성.
// 해당 객체 에 대한 메서드를 호출.
bike1.changeCadence (50);
bike1.speedUp (10);
bike1.changeGear (2);
bike1.printStates (); //bike1의 상태 출력
bike2.changeCadence (50);
bike2.speedUp (10);
bike2.changeGear (2);
bike2.changeCadence (40);
bike2.speedUp (10);
bike2.changeGear (3);
bike2.printStates (); //bike2의 상태 출력
}
}
이 테스트는 두 자전거의 마지막 속도, 속력 및 기어를 출력한다.
bike1 = 속도: 50 속력: 10 기어 : 2
bike2 = 속도: 40 속력: 20 기어 : 3
이렇듯, class를 사용하여 똑같은 성질의 객체를 여러 개 생성하고, 동일한 메소드를 재사용 할 수 있다.
출처 : docs.oracle.com/javase/tutorial/java/concepts/class.html
'Language > Java' 카테고리의 다른 글
Java api 일기 6 연산자 요약 (0) | 2021.01.18 |
---|---|
Java api 일기 5 패키지란? (0) | 2021.01.18 |
Java api 일기 4 인터페이스란? (0) | 2021.01.18 |
Java api 일기 3 상속이란? (0) | 2021.01.17 |
Java api 일기 1 객체란? (0) | 2021.01.17 |