728x90

추상 클래스

추상(미완성) 메소드를 하나라도 갖고 있는 클래스

완성하기 전까지 인스턴스를 생성할 수 없음

다른 클래스 작성에 도움을 주기 위해 있는 클래스

일반적인 클래스와 동일하게 생성자가 있어야 함

// 추상 클래스
abstract class Player {
	abstract void play(); // 몸통이 없는 메소드
}
Player p = new Player(); // 잘못된 코드. 추상 클래스의 인스턴스는 생성불가

// 상속을 통해 추상 메소드를 완성해야 인스턴스 생성이 가능
class AudioPlayer extends Player {
	void play() { 내용 } // 자손 메소드에서 몸통을 구현
}
class RadioPlayer {
	void play() { 내용 }
}

// 인스턴스 생성
AudioPlayer ap = new  AudioPlayer(); // 몸통을 구현한 자손 클래스는 인스턴스 생성가능
Player p = new  AudioPlayer(); // 자손 클래스에 구현이 되어 있으면 조상 타입으로도 생성가능

// 추상 클래스의 배열 사용
Player[] p = new Player[2]
p[0] = new AudioPlayer();
p[1] = new RadioPlayer();

추상 클래스 작성

여러 클래스에 공통적으로 사용될 수 있는 추상 클래스를 바로 작성하거나

기존 클래스의 공통 부분을 뽑아서 만들기

추상 클래스 자체를 다시 단계별로 나눠서 작성하는 경우는 코드를 더 효율적으로 관리할 수 있음

추상 메소드

꼭 필요한 기능이지만 자손마다 다르게 구현될 것으로 예상되는 기능

메소드는 선언부만 존재해도 호출이 가능해서 추상 메소드도 호출은 가능

꼭 만들어야 하는 기능들을 강제하기 위해 사용

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

내부 클래스  (0) 2023.04.25
인터페이스  (0) 2023.04.25
다형성  (0) 2023.04.24
제어자와 캡슐화  (0) 2023.04.24
import / static import  (0) 2023.04.24

+ Recent posts