개발/Java

Java] Do it 자바 프로그래밍 입문 요약 (둘째마당 - 09)

펭귀니 :) 2019. 6. 16. 22:31

09) 추상 클래스

추상 메서드란?

함수 몸체가 없이 선언만 하는 메서드

abstract int add(int x, int y); //abstract 예약어를 사용

public abstact class Computer {
    public abstract void display(); //추상메서드
    public abstract void typing(); //추상메서드
    public void turnOn(){
    	System.out.println("전원을 켭니다.");
    }
    public void turnOff(){
    	System.out.println("전원을 끕니다.");
    }
}

위 예제는 Computer를 상속받는 클래스 중 turnOn과 turnOff구현 코드는 공통이다. 하지만 display와 typing은 하위 클래스에 따라 구현이 달라질 수 있다. 그래서 Computer에서는 구현하지 않고, 이 두 메서드 구현에 대한 책임을 상속받는 클래스에 위임한다.

이때 public class DeskTop extends Computer{}은 추상클래스로 만들거나, 구현되지 않은 추상메서드인 display와 typing 메서드를 모두 구현해야 한다.

 

추상클래스를 만드는 이유

추상 클래스는 인스턴스로 생성할 수 없다.

추상 클래스는 상속을 하기 위해 만든 클래스입니다. 하위 클래스에서도 사용할 메서드를 구현하고, 하위 클래스에서 내용을 각각 다르게 구현해야 한다면, 구현 내용을 추상 메서드로 남겨둡니다.

 

템플릿 메서드

실행 순서, 즉 시나리오를 정의한 메서드이므로 바뀔 수 없다. 그래서 메서드 앞에 예약어 final을 사용해서 선언!

상속받은 하위 클래스가 메서드를 재정의할 수 없다.

 

final 예약어

변수에서는 상수를 의미, 메서드에서는 하위 클래스에서 재정의할 수 없음을 의미, 클래스에서는 상속할 수 없음을 의미.