추상클래스란 ?
: 추상적인 개념 -> 추상클래스
: 게임이라면 화면에 나타낼 수 없는 것들
구현 코드 없이 메서드의 선언만 있는 추상 메서드를 포함한 클래스이다.
추상 클래스는 new를 사용할 수 없다. (인스턴스화 할 수 없음.)
package ch13;
public abstract class Car { //추상 클래스
protected abstract void drive();
protected abstract void stop(); //추상 메서드
}
추상 클래스 템플릿 메서드 패턴으로 구현하기
→ 글자가 이탤릭체로 휘어져 있으면 추상 클래스, 추상 메서드이다.
Car 추상 클래스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | package ch13; /* * * 템플릿 메서드 패턴을 구현 * 핵심 run() 메서드이다. */ public abstract class Car { protected abstract void drive(); protected abstract void stop(); private void startCar() { System.out.println("시동을 켭니다."); } private void turnOff() { System.out.println("시동을 끕니다."); } public void run() { startCar(); drive(); stop(); turnOff(); } } | cs |
→ Car 추상 클래스를 만들고 drive, stop은 추상 메서드로 구현하고 나머지는 일반 메서드로 구현한다.
AICar 클래스
1 2 3 4 5 6 7 8 9 10 11 12 13 | package ch13; public class AICar extends Car { protected void drive() { System.out.println("자율주행을 합니다."); } protected void stop() { System.out.println("자동차가 스스로 멈춥니다."); } } | cs |
→ 추상 클래스의 추상 메서드는 하위 클래스에서 상속하여 구현한다.
ManualCar 클래스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | package ch13; public class ManualCar extends Car { protected void drive() { System.out.println("사람이 운전을 합니다."); } protected void stop() { System.out.println("사람이 브레이크를 밟습니다."); } public void run() { super.run(); } } | cs |
→ Car 클래스 (조상 클래스)의 메서드를 호출한다.
Main 클래스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | package ch13; public class MainTest1 { // main 함수 public static void main(String[] args) { AICar aiCar = new AICar(); aiCar.run(); System.out.println("----------------"); ManualCar manualCar = new ManualCar(); manualCar.run(); } // end of main } // end of class <결과 화면> 시동을 켭니다. 자율 주행을 합니다. 자동차 스스로 멈춥니다. 시동을 끕니다. ---------------- 시동을 켭니다. 사람이 운전을 합니다. 사람이 브레이크를 밟습니다. 시동을 끕니다. | cs |
'프로그래밍 > Java' 카테고리의 다른 글
Java_Swing 키보드 방향키로 이미지를 창 안에서만 움직이게 하기 (0) | 2023.02.16 |
---|---|
Java_예외처리 (0) | 2023.02.16 |
Java_Object클래스 (0) | 2023.02.14 |
Java_인터페이스 (0) | 2023.02.14 |
Java_상속과 다형성 (0) | 2023.02.14 |