# TIL: 2022-07-31

wisdom·2022년 8월 1일
0

Today I learned

목록 보기
8/79

TIL: 2022-07-31

오늘 한 일

  • 자바 문법에서 새로 생긴 지 한참된건데 아직 모르고 있었던 것들 공부
  • 스프링 개념 공부

배움

인터페이스에서의 default 메소드

  • 자바8 이후 interface에 대한 정의가 변경됨
    • 추가적으로 변경된 건 인터페이스에서의 static 메소드도 있음.

default 메소드

  • 인터페이스가 default 키워드로 선언되면 메소드가 구현될 수 있다. 그리고 이를 구현하는 클래스는 default 메소드를 오버라이딩 할 수 있다.

default 메소드는 왜 생겼을까?

  • default 메소드는 암시적으로 public 이라 굳이 public 이라고 명시할 필요가 없지만 인터페이스에서는 default 라는 키워드를 선언됨으로써 그 역할을 수행한다.
  • 인터페이스가 변경되는 경우, 인터페이스를 구현한는 모든 클래스들이 해당 메소드를 구현해야하는 귀찮은 문제가 있다.
    이 문제를 해결하기 위하여 인터페이스 메소드를 구현해 놓을 수 있도록 했다.
    - 구현 클래스를 수정하지 않고 깔끔하게 하위 호환이 가능하게 한다. (backward compatibility)
    - 기존의 추상 메소드에 기능을 덧붙이는 목적으로 사용할 수 있다.

default 메소드 주의점

  • 우선 자바가 인터페이스의 다중 상속을 허용한다는 점을 알아야함
  • 그래서 동일한 default 메소드를 정의한 여러 개의 인터페이스를 한 클래스가 다중 상속한다면?
    • 인터페이스 다중 상속으로 인한 충돌 발생으로 코드는 컴파일되지 않음
    • 해결 방법
      • 모호함을 해결하기 위해 메소드에 명시적으로 구현해야함

회고

  • 자바 스트림을 좀 잘 다루고 싶은데 지금 내가 하기에는 좀 버거운 거 같다고 느껴진다. 공부해야 할 거 산더미!
profile
문제를 정의하고, 문제를 해결하는

0개의 댓글