[java] 추상클래스와 인터페이스(+ 함수형 인터페이스)

 


목차

  1. 추상클래스
  2. 인터페이스
  3. 함수형 인터페이스




추상클래스

  • 추상 메서드가 하나라도 포함된 클래스.
  • abstract 키워드를 붙여서 정의한다.
  • 상속 받은 자녀 클래스에서 반드시 추상 메서드를 오버라이딩해서 구현해야 한다.
  • 자신의 생성자로 객체 생성이 불가능하다.
  • 추상클래스를 사용하는 이유
    • 공통된 필드나 메서드를 추출하여 다른 클래스들에서 동일된 내용으로 작성하도록 규격화한 것
  • 추상메서드
    • 내용을 갖지 않고 선언만 된 메서드





인터페이스

  • 상수추상메서드만 가지는 일종의 추상 클래스
  • 다중상속이 가능하다.
  • 상속의 관계가 없는 클래스 간에 서로 공통되는 로직을 구현해서 사용할 수 있도록 한다.


인터페이스를 사용하는 이유
  • 협업 시 비슷한 구조의 메서드를 여러 개 구현하는 상황에서 하나의 규약으로써 구현 방식을 통일시킬 수 있고, 인터페이스에 구현된 추상 메서드의 매개변수와 함수명을 통해 인터페이스만으로도 대략적인 기능을 파악할 수 있다.(가독성)




함수형 인터페이스

  • 추상 메서드가 1개인 인터페이스

  • 예시 - Comparator

    interface CustomComparator implements Comparator {
    	@Override
    	public int compare(Long o1, Long o2) {
    		return o2-o1 < 0 ? -1 : 1;
    	}
    }