컴공생의 다이어리

[자바, Java] 추상 클래스(abstract class) 본문

Development/Java

[자바, Java] 추상 클래스(abstract class)

컴공 K 2021. 8. 29. 00:01

추상 클래스(abstract class)

추상 클래스란 구현 코드 없이 메서드의 선언만 있는 추상 메서드(abstract method)를 포함한 클래스를 말한다. 여기서 메서드의 선언만 있다는 말은 아래 코드에서 첫번째 처럼 생긴 것을 말한다.

int add(int x, int y); // 선언
int add(int x, int y){ } // 구현부가 있음, 추상 메서드 아님

 

또한 추상 클래스는 abstract라는 예약어를 사용한다. 추상 클래스의 경우 new할 수 없다. 즉 인스턴스 화 할 수 없다는 것이다.

 

 

추상 클래스 구현

메서드에 구현 코드가 없으면 abstract로 선언하며 abstract로 선언된 메서드를 가진 클래스는 abstract로 선언해야 한다. 또한 주의해야 할 점은, 모든 메서드가 구현 된 클래스가 있더라도 abstract로 선언되면 추상 클래스이므로 인스턴스화 할 수 없다.

추상 클래스의 추상 메서드는 하위 클래스가 상속하여 구현한다. 

  • 추상 클래스 내의 추상 메서드 : 하위 클래스가 구현해야 하는 메서드
  • 추상 클래스 내의 구현 된 메서드 : 하위 클래스가 공통으로 사용하는 메서드 ( 필요에 따라 하위 클래스 에서 재정의 함 )

 

아래 코드에서 Computer 클래스는 추상 클래스이다. Desktop 클래스는 Computer 클래스를 상속받았기 때문에 display함수와 typing함수를 무조건 구현해줘야 한다. turnOff함수의 경우 재정의한 것이다.

public abstract class Computer {
  abstract void display();
  abstract void typing();
  public void turnOn() {
  	System.out.println("전원을 켭니다.");
  }
  public void turnOff() {
  	System.out.println("전원을 끕니다.");
  }
}

public class DeskTop extends Computer{
  @Override
  void display() {
  	System.out.println("DeskTop display");
  }
  
  @Override
  void typing() {
  	System.out.println("DeskTop typing");
  }
  
  @Override
  public void turnOff() {
  	System.out.println("Desktop turnoff");
  }
}

public class ComputerTest {
  public static void main(String[] args) {
  	Computer computer = new DeskTop();
  	computer.display();
  	computer.turnOff();
  }
}

 

 

 

 

출처 : 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online

728x90
Comments