본문 바로가기

Java

Java 추상 클래스(abstract class), 추상 메서드(abstract method)

 

1. 추상 클래스(abstract class)

- 미완성 설계도

- 미완성 메서드인 추상 메서드를 갖고 있는 클래스

- 다른 클래스 작성에 도움을 주기 위한 클래스

- 상속을 통해 추상 메서드를 완성해야 인스턴스 생성 가능 👉🏻 상속을 통해 추상 메서드를 구현하고 인스턴스 생성

 

 

2. 추상 메서드(abstract method)

- 구현부인 몸통{}이 없는 미완성 메서드

- 몸통이 없는대신 abstract가 앞에 붙음

abstract 반환형 메서드명();

- 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상될 경우 사용

- 추상 클래스를 상속 받아 추상 메서드를 구현하는데, 추상 클래스에 있는 모든 메서드를 구현할 수도 있고 일부 메서드만 구현할 수도 있음

- 추상 메서드 호출 가능(호출 시 선언부만 필요)

/**
 * 추상 클래스 Player
 */
abstract class Player { 
    boolean pause; // 일시정지 상태를 저장하기 위한 변수
    int currentPos; // 플레이 중인 위치를 저장하기 위한 변수

    Player() { // 추상 클래스도 생성자가 있어야 
        pause = false;
        currentPos = 0;
    }

    abstract void play(int pos);  // 추상 메서드 play(int post), 지정된 위치에서 재생하는 기능이 수행되도록 구현해야함
    abstract void stop();		  // 추상 메서드 stop(), 재생을 멈추는 기능이 수행되도록 구현해야함

    void play() {
        play(currentPos); // 추상메서드 사용 가능
    }
}

/**
 * 추상 클래스 Player를 상속받은 AudioPlayer
 */
class AudioPlayer extends Player { 
    void play(int post) { // 추상 메서드 play(int post) 구현
        // ...
    }
    void stop() {		  // 추상 메서드 stop() 구현
        // ...
    }
}

/**
 * 추상 클래스 Player를 상속받았지만 추상 메서드 play(int post) 구현하지 않았기 때문에 추상 클래스 AbstractPlayer
 *
 */
abstract class AbstractPlayer extends Player {
    void play(int post) {
        // ...
    }
}

 

 

3. 추상화 이해하기

1) 추상(): 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용

2) 구체(): 사물이 직접 경험하거나 지각할  있도록 일정한 형태와 성질을 갖춤

 

👉🏻 추상화는 공통적인 특성과 속성을 뽑은 것! 

장미, 해바라기, 안개꽃, 프리지아, 백합 등의 여러 꽃 종류가 있는데 이것들을 다 꽃이라고 부르는 것처럼

향기가 나고, 나비와 벌이 꿀을 먹고, 꽃 가루를 날리고 등의 공통 속성을 뽑아서 꽃이라고 하는 것이 추상화

각각의 꽃은 색이 다르고, 자라나는 환경이 다르고, 잎의 종류가 다르고 그런 개별적인 속성이 구체화

'Java' 카테고리의 다른 글

Java default 메서드와 static 메서드  (0) 2022.12.29
Java 인터페이스(interface)  (0) 2022.12.28
Java 매개변수의 다형성  (0) 2022.12.27
Java 참조변수의 형변환과 instanceof  (0) 2022.12.27
Java 다형성(polymorphism)  (0) 2022.12.26