Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions seungheon/template/Car.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
abstract class Car {

// 템플릿 메소드
public final void driveCar() {
startCar();
drive();
stopCar();
if (needWashing()) {
washCar();
}
}

// 공통된 메소드
protected void startCar() {
System.out.println("자동차 시동을 겁니다.");
}

protected void stopCar() {
System.out.println("자동차 시동을 끕니다.");
}

// 추상 메소드 (각 자동차가 구현해야 하는 메소드)
protected abstract void drive();

// hook
protected boolean needWashing() {
return true; // 기본적으로 세차 필요
}

protected void washCar() {
System.out.println("자동차를 세차합니다.");
}
}
11 changes: 11 additions & 0 deletions seungheon/template/ElectricCar.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class ElectricCar extends Car {
@Override
protected void drive() {
System.out.println("전기차를 부드럽게 운전합니다.");
}

@Override
protected boolean needWashing() {
return false; // 전기차는 세차하지 말자;;
}
}
6 changes: 6 additions & 0 deletions seungheon/template/SUVCar.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class SUVCar extends Car {
@Override
protected void drive() {
System.out.println("SUV를 험로에서 운전합니다.");
}
}
11 changes: 11 additions & 0 deletions seungheon/template/SportsCar.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class SportsCar extends Car {
@Override
protected void drive() {
System.out.println("스포츠카를 고속으로 운전합니다!");
}

@Override
protected void washCar() {
System.out.println("스포츠카를 전용 왁스로 세차합니다.");
}
}