추상 클래스와 인터페이스

1. 추상 클래스(Abstract Class)

1) 추상 클래스(Abstract Class)

추상 클래스란 일반 클래스와 달리 인스턴스화가 불가능한 클래스이며, abstract 키워드를 붙여 선언한다. 문법적으로 이 키워드를 붙인 클래스는 하나 이상의 추상 메서드를 포함하고 있다고 설명할 수 있다.

추상 클래스를 사용하면 보다 구조적으로 객체를 설계하고, 프로그램의 유지보수성을 올려주며, 개방폐쇄원칙을 만족하도록 프로그래밍이 가능해진다.

// 추상 클래스
public abstract class abstractClass {
	
	  public int test1() {
	    	return 5;
	  }
	
    // 추상 메서드
	  public abstract int test2();
}

2) 추상 메서드(Abstract Method)

추상 메서드는 abstract 키워드를 붙여 선언한 메서드를 말한다. 이 메서드는 구현부는 존재하지 않고, 이 추상 메서드를 포함한 클래스인 추상 클래스를 상속받는 자식 클래스가 상황에 맞게 적절히 재정의 하여 구현해 주어야함을 의미한다.

abstract 반환타입 메서드이름();

2) 훅 메서드(Hook Method)

추상 클래스를 사용하는 디자인 패턴인 템플릿 메서드 패턴에서는 훅 메서드라는 개념이 등장한다. 훅 메서드는 문법적으로만 보면 일반 메서드와 다르지 않다. 다만 기본적인 내용만 구현되어있거나, 아무 코드도 들어 있지 않은 메서드이다. 이 메서드는 자식 클래스에서 재정의 해서 사용할 수 있도록 의도한 있는 메서드 이지만 추상 메서드가 아니므로 필요하지 않다면 재정의 하지 않아도 된다.

<aside> 👨🏻‍💻 개인적인 주관으로는 템플릿 메서드에서 개념적으로 메서드들을 구분하기 위해 들여온 개념으로 생각된다. 혹시 훅 메서드 개념이 등장한 배경에 대해 아시는 분은 댓글 등으로 알려주시길..

</aside>

2. 인터페이스(Interface)