티스토리 뷰

study/Java

추상 클래스 & 메서드

xoxowo 2022. 12. 22. 16:39

추상 클래스 abstract class

여러 클래스에 공통적으로 사용될 수 있는 클래스를 바로 작성하기도하며, 기존 클래스들의 공통적인 부분을 뽑아 추상클래스로 만들어 상속하는 경우도 있다.

 

추상 클래스는 미완성 메서드를 포함하고 있다.

추상 클래스는 상속을 통해 구현해주어야 한다.

추상 클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있기 때문에 조상클래스로 중요한 의미가 있다.

 

 

추상 클래스를 선언하는 방법은 클래스 앞에 키워드 'abstract'를 붙이면 된다.

 

// abstract class 클래스 이름 {}
abstract class Player { 
	abstract void play (int pos); // 추상 메서드
	abstract void stop(); // 추상 메서드 
}

 

 

상 메서드 abstract method

선언부만 작성하고 구현부 {} 는 작성하지 않은 채로 남겨둔 것이 추상 메서드

 

메서드를 미완성 상태로 남겨놓는 이유?

메서드의 내용이 상속받는 클래스에 따라 달라질 수 있기 때문에 조상 클래스에는 선언부만 작성하고, 주석을 붙여 어떤 기능을 수행할 목적인지 작성하여, 실제 내용은 상속받는 클래스에서 구현하도록 하기 위함이다.

 

추상 메서드 역시 키워드 'abstract'를 앞에 붙여주고 구현부{}가 없기 때문에 {} 괄호 대신 ';'(세미콜론)을 적는다.

/* 어떤 기능을 수행하는 목적인지 주석으로 설명 */
// abstract 리턴타입 메서드이름 ();
abstract void play(int pos);

단, 조상으로부터 상속받은 추상메서드 중 하나라도 구현하지 않는다면, 자손 클래스 또한 추상 클래스로 지정해 주어야 한다.

abstract class Player { // 추상 클래스
	abstract void play (int pos); // 추상 메서드 {}구현부가 없다
	abstract void stop(); // 추상 메서드 
}

class AudioPlayer extends Player {  //추상 클래스 상속
	void play(int pos) { //추상 클래스를 구현
     // 내용 구현~ 생략
    }
    void stop() { //추상 클래스를 구현
    // 내용 구현~ 생략
    }
}

abstract class AbstractPlayer extends Player {
	void play(int pos) { // 추상클래스를 상속받았지만 추상메서드를 모두 구현하지 않는다면
    // 내용 구현~ 생략           자손 클래스 또한 추상클래스로 지정해줘야한다
11    }                      // 따라서 해당 클래스 앞에 abstract 지정해주었다
}

'study > Java' 카테고리의 다른 글

쓰레드 (Thread)  (0) 2023.01.02
인터페이스 (interface)  (0) 2022.12.26
제어자 (modifier)  (0) 2022.12.20
오버라이딩 (overriding)  (0) 2022.12.17
상속 (inheritance)  (0) 2022.11.16
댓글