Java 추상 클래스(abstract class), 추상 메서드(abstract method)
by 볼빵빵오춘기추상 클래스(abstract class)
- 미완성 설계도. 미완성 메서드를 갖고 있는 클래스
더보기
abstract class Player{ // 추상클래스(미완성클래스)
abstract boid play(int pos); // 추상메서드(몸통{}이 없는 미완성 클래스)
abstract boid stop(); // 추상메서드
}
- 다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가
더보기
Player p = new Player(); // 에러. 추상클래스의 인스턴스 생성 불가
⇒ 상속을 통해 추상 메서드를 완성해야 인스턴스 생성 가능
class AudioPlayer extends Player{
void play(int pos){/* 내용 생략 */} // 추상메서드 구현
void stop(){/* 내용 생략 */} // 추상메서드 구현
}
AudioPlayer ap = new AudioPlayer();
⇒ 클래스 Player 는 미완성 클래스 였지만 AudioPlayer은 완성클래스 이기 때문에 abstract를 앞에 붙이지 않음
참고 : 몸통({})만들어주는 것을 ‘구현’이란 표현을 쓴다.
추상 메서드(abstract method)
미완성 메서드. 구현부(몸통,{})가 없는 메서드이다.
더보기
미완성 메서드. 구현부(몸통,{})가 없는 메서드이기 때문에 주석을 통해 어떤 기능을 수행할 목적으로 작성하였는지 설명하는 글을 작성해주자!
abstract 리턴타입 메서드이름();
abstract class Player{
abstract boid play(int pos); // play가 움직일 때 작동하는 메서드
abstract boid stop(); // play가 움직임을 멈출 때 작동하는 메서드
}
추상 메서드는 언제 쓰이나?
꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우에 쓰면된다.
abstract class Player{ // 추상클래스(미완성클래스)
abstract boid play(int pos); // 추상메서드(몸통{}이 없는 미완성 클래스)
abstract boid stop(); // 추상메서드
}
class AudioPlayer extends Player{
void play(int pos){/* 내용 생략 */} // 추상메서드 구현
void stop(){/* 내용 생략 */} // 추상메서드 구현
}
abstract class AbstractPlayer extends Player{
void play(int pos) {/* 내용 생략 */} // 추상메서드 구현
}
⇒ 클래스 AbstractPlayer 에 abstract 붙는이유는 stop()에 대한 구현을 안해주었기 때문이다.
⇒ why? 구현부의 메서드만 보면 추상클래스가 아니어보이지만 Player에서 상속을 stop(),play(int pos) 둘다 물려받았기 때문에 보이지 않지만 stop()이란 메서드가 있는것이다.
예제 코드
abstract class Player{ // 추상 클래스
abstract void play(int pos); // 추상 메서드
abstract void stop(); // 추상 메서드
}
class AudioPlayer extends Player{
void play(int pos) {
System.out.println(pos+"위치부터 play합니다.");
}
void stop() {
System.out.println("재생을 멈춥니다.");
}
}
public class PlayerTest {
public static void main(String[] args) {
// Player p = new Player(); // 추상클래스의 객체를 생성
// AudioPlayer ap = new AudioPlayer();
Player ap = new AudioPlayer(); // 다형
ap.play(100);
ap.stop();
}
}
'👩🏻💻 About 프로그래밍 > Java' 카테고리의 다른 글
Java 인터페이스와 다형성 (0) | 2023.11.30 |
---|---|
Java 추상클래스의 작성1 (0) | 2023.11.30 |
Java 다형성의 장점 - 여러 종류의 객체를 배열로 다루기 (0) | 2023.11.30 |
Java 다형성의 장점 - 매개변수의 다형성 (0) | 2023.11.30 |
Java instanceof 연산자 (0) | 2023.11.29 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기