[백엔드 데브코스 4기] TIL - Day 5

hongxeob·2023년 6월 6일
0

회고

목록 보기
30/100
post-thumbnail

오늘은 6/6 현충일이다. 따로 약속도 없어서 마음 편하게 공부를 하였다.(OTL..)
오늘 역시 주어진 강의를 보았는데. 자바의 Interface에 관한 강의였다.
또 팀내에서 디자인패턴을 한 가지씩 설명하고 발표하는 시간을 갖기로 했는데
발표 하고싶은 후보군 3가지를 내일(6/6)까지 정해오기로 하여 자주쓰는 디자인 패턴들도 몇가지 읽어보았다.

오늘의 학습 Keyword

  • Interface
  • default 메소드
  • Functional Interface
  • 람다 표현식
    • 메소드 참조(레퍼런스)

🔥 새롭게 배운 것 / 리마인드

  • default 메소드에 관해서도 한 번 더 생각할 수 있었다.
    • 인터페이스가 구현체를 가질 수 있게 된다.
    • 인터페이스 내에서 기본적인 구현을 제공하며, 구현체에서 이 메서드를 재정의하지 않아도 됩니다.
  interface MyInterface {
    /** default X -> 구현체 메소드X -> 추상 메소드
    */
    void method();

    /**
     * default O -> 인터페이스가 구현체를 가질수 있게 됐다
     */
    default void sayHello() {
        System.out.println("hello");
    }
  }

아래에서 사용할 때

public class Main implements MyInterface {
  public static void main(String[] args) {
      /** 매개변수,반환타입이 명시되지 않은 추상 메서드 -> 구현체에서 재정의 필수!
       */
      new Main().method();
      
      /** 인터페이스에서 default 메서드로 구현해 줬기에 재정의(override) 필요X
       * but 필요하다면 재정의 해주어 사용 가능
       */
      new Main().sayHello(); // 
  }
  
  @Override
  public void method() {
      System.out.println("method");
  }
}
// 출력 : method
// 	     hello
  • 자바8 스터디를 하고 있지만, 메소드 레퍼런스는 단순히 코드를 줄여주는 의미로만 생각했는데 더 이해하기 쉽게, 쓰는 이유들을 본다면
    • 람다 표현식에서 입력되는 값을 변경없이 바로 사용하는 경우
    • 최종으로 적용될 메소드이 레퍼런스를 지정해 주는 표현 방식
    • 입력값을 변경하지 말라는 표현방식 (개발자의 개입을 차단함으로써 안정성을 얻을 수 있다)

🧶 아쉬웠던 점

  • 목표를 크게 잡아 내일 강의까지 들어보자! 했지만.. 오늘 강의를 이해하고 넘어가는데에도 시간이 조금 걸렸다. 강의의 흐름을 보며 목표 분배를 잘 해야겠다

🌱 내일의 간략한 목표

  • 선정된 디자인 패턴 분석 및 심도깊게 읽어보기
  • 강의 시청 완료 후 계산기 과제 시작!
profile
걍 하자 저스트 뚜잇

0개의 댓글