본문 바로가기

프로그래밍/Java

Java_추상 클래스(abstract class)

추상클래스란 ? 

: 추상적인 개념 -> 추상클래스

: 게임이라면 화면에 나타낼 수 없는 것들

 

구현 코드 없이 메서드의 선언만 있는 추상 메서드를 포함한 클래스이다.

추상 클래스는 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