💻 Study/Java
[Java] 객체지향개념14_추상클래스, 추상메서드
와자!
2023. 2. 20. 22:23
728x90
728x90
이 게시글은 남궁성의 정석코딩 - 자바의 정석 기초편(2020최신)을 보고 공부한 내용을 정리한 게시글입니다.
틀린 내용이 있을 수 있습니다.
✔ 추상클래스, 추상메서드
- 미완성 설계도.
추상클래스 | 추상메서드 | |
정의 | 미완성 메서드를 갖고 있는 클래스를 말한다. | 구현부가 없는, 미완성인 메서드를 말한다. |
표현 | 클래스 앞에 abstract를 붙여 추상클래스 임을 나타낸다. | 메서드 선언 타입 앞에 abstract를 붙어 추상메서드 임을 나타낸다. |
사용방법 | - 상속을 통해 자식클래스가 메서드를 완성하게 한다. - 상속받은 자식클래스는 부모의 추상메서드를 모두 구현하여 완성시켜야 한다. 그렇지 않을 경우 자식클래스도 abstract를 붙여 추상클래스가 되어야 한다. |
자식클래스에서 다르게 구현해야하는 메서드일 경우 사용한다. |
비고 | 추상클래스는 미완성이기 때문에 객체를 생성할 수 없다. |
abstract class Player{ // 추상클래스
abstract void play(int pos); // 추상메서드
abstract void stop(); // 추상메서드
}
- 추상메서드는 미완성 메서드이기 때문에 구현부 {} 중괄호가 없다.
예제를 통해 알아보자.
아래 예제는 게임의 npc들 별로 다른 움직임을 나타낸다.
abstract class NPC{
int x, y;
abstract void move(int x, int y);
void stop(){};
}
class Person extends NPC{
void move(int x, int y){
// 속도 1로 움직이는 코드
};
}
class Dog extends NPCs{
void move(int x, int y){
// 속도 3으로 움직이는 코드
};
}
- 추상클래스 NPC와 그를 상속받는 자식클래스 Person, Dog가 있다.
- 추상클래스 NPC 안에는 추상메서드 move()가 있다.
- 추상클래스 move()는 각각의 자식클래스에서 다른 구현부를 작성하여 사용한다.
- stop() 메서드는 모든 클래스에서 같은 기능을 사용하기 때문에 완성된 메서드로 작성해준다.
- move() 메서드는 Person 클래스에서는 속도 1로 움직이고 Dog 클래스에서는 속도 3으로 움직여야 한다.
미완성인 상태로 상속받아야 클래스에 맞게 구현할 수 있으므로 추상메서드로 만든다.
- NPC 클래스는 추상메서드 move()를 가지고 있기 때문에 추상클래스가 된다.
728x90
728x90