💻 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