[public] class 클래스명 {
필드 (Field);
필드 (Field);
፧
생성자 (Constructor)
생성자 (Constructor)
፧
메소드 (Method)
메소드 (Method)
፧
}
클래스명 참조변수 = new 클래스명();
// 참조변수.필드명 : 참조변수에 저장된 객체가 '.'연산자를 사용하여 필드에 접근
// Car.java
public class Car {
// 필드(Field) : 클래스 내부에 선언된 모든 메소드는 필드 접근 가능
String modelName;// 모델명
boolean engineStatus;// 엔진상태 - false : EngineOff, true : EngineOn
int currentSpeed;// 현재속도
// 생성자(Constructor) : 생성자를 선언하지 않으면 매개변수가 없는 기본 생성자(Default
// Constructor)가 자동으로 생성되어 제공
// 메소드(Method) : 필드를 사용하여 메소드의 명령으로 필요한 기능을 제공되도록 작성
void startEngine() {// 시동 온(On)
engineStatus = true;
System.out.println(modelName + "의 자동차 시동을 켰습니다.");
}
void stopEngine() {// 시동 오프(Off)
if (currentSpeed != 0) {// 자동차가 멈췄있지 않은 상태인 경우
// 클래스 내부에 선언된 메소드는 서로 호출 가능
// => 코드의 중복성을 최소화 하여 프로그램의 생산성 및 유지보수의 효율성 증가
speedZero();
}
engineStatus = false;
System.out.println(modelName + "의 자동차 시동을 껐습니다.");
}
void speedUp(int speed) {// 속도 증가
if (!engineStatus) {// 엔진이 꺼져 있는 경우
System.out.println(modelName + "의 자동차 시동이 꺼져 있습니다.");
return;// 메소드 종료
}
if (currentSpeed + speed > 150) {
speed = 150 - currentSpeed;
}
currentSpeed += speed;
System.out.println(modelName + "의 자동차 속도가 " + speed + "Km/h 증가 되었습니다. 현재 속도는 " + currentSpeed + "Km/h 입니다.");
}
void speedDown(int speed) {// 속도 감소
if (!engineStatus) {// 엔진이 꺼져 있는 경우
System.out.println(modelName + "의 자동차 시동이 꺼져 있습니다.");
return;// 메소드 종료
}
if (currentSpeed < speed) {
speed = currentSpeed;
}
currentSpeed -= speed;
System.out.println(modelName + "의 자동차 속도가 " + speed + "Km/h 감소 되었습니다. 현재 속도는 " + currentSpeed + "Km/h 입니다.");
}
void speedZero() {// 이동 중지
currentSpeed = 0;
System.out.println(modelName + "의 자동차가 멈췄습니다.");
}
}
// CarApp.java
public class CarApp {
public static void main(String[] args) {
Car carOne = new Car();
Car carTwo = new Car();
Car carThree = new Car();
System.out.println("carOne = " + carOne);
System.out.println("carTwo = " + carTwo);
System.out.println("carThree = " + carThree);
System.out.println("============================================================");
carOne.modelName = "싼타페";// 객체의 필드값 변경
System.out.println("첫번째 자동차 모델명 = " + carOne.modelName);// 객체의 필드값 사용
System.out.println("첫번째 자동차 엔진상태 = " + carOne.engineStatus);
System.out.println("첫번째 자동차 현재속도 = " + carOne.currentSpeed);
System.out.println("============================================================");
carTwo.modelName = "쏘나타";
carTwo.engineStatus = true;
carTwo.currentSpeed = 80;
System.out.println("두번째 자동차 모델명 = " + carTwo.modelName);
System.out.println("두번째 자동차 엔진상태 = " + carTwo.engineStatus);
System.out.println("두번째 자동차 현재속도 = " + carTwo.currentSpeed);
System.out.println("============================================================");
carOne.startEngine();
carOne.speedUp(50);
carOne.speedUp(30);
carOne.speedDown(40);
carOne.speedZero();
carOne.stopEngine();
System.out.println("============================================================");
}
}
// carOne = oop.Car@3b6eb2ec
// carTwo = oop.Car@1e643faf
// carThree = oop.Car@6e8dacdf
// ============================================================
// 첫번째 자동차 모델명 = 싼타페
// 첫번째 자동차 엔진상태 = false
// 첫번째 자동차 현재속도 = 0
// ============================================================
// 두번째 자동차 모델명 = 쏘나타
// 두번째 자동차 엔진상태 = true
// 두번째 자동차 현재속도 = 80
// ============================================================
// 싼타페의 자동차 시동을 켰습니다.
// 싼타페의 자동차 속도가 50Km/h 증가 되었습니다. 현재 속도는 50Km/h 입니다.
// 싼타페의 자동차 속도가 30Km/h 증가 되었습니다. 현재 속도는 80Km/h 입니다.
// 싼타페의 자동차 속도가 40Km/h 감소 되었습니다. 현재 속도는 40Km/h 입니다.
// 싼타페의 자동차가 멈췄습니다.
// 싼타페의 자동차 시동을 껐습니다.
// ============================================================
위의 CarApp.java 처럼 main 메소드에서
메소드를 이용하지 않고 직접 필드를 다루는 것은 좋지 않다.