[2020.11.06.금] TIL

👨‍💻 오늘 한 것

  • 알고리즘 데이(금) 백준 기초 문제풀이
  •  - BOJ_1000_AB.java
     - BOJ_1008_AB.java
     - BOJ_2438_STAR.java
     - BOJ_2562_FindMax.java
     - BOJ_2675_repeatString.java
     - BOJ_2920_Scale.java         

❓ 코코아 질문답변

  • GyLe 질문:

    List list = new ArrayList();와 같이 업 캐스팅을 하는 이유는 무엇인가요? List 인터페이스에서 사용할 수 있는 메소드양이 List를 구현한 ArrayList에서 사용할 수 있는 메소드양보다 적기 때문에 그런 건가요?

  • SONY 답변:

    객체지향의 특징 중 하나인 다형성을 사용하기 위함입니다. List는 인터페이스이고, ArrayList는 List 인터페이스를 구현한 구현체 입니다.
    ArrayList라는 구현체로 선언하면 해당 자료구조를 ArrayList로 제한하게 됩니다. 따라서 나중에 자료구조가 LinkedList 변경되었을 때 해당 ArrayList가 쓰인 곳의 모든 코드를 LinkedList로 변경해줘야합니다. 즉, 변경에 유연하지 못한 구조가 되죠. 하지만 List로 선언하면 LinkedList로 바꾸더라도 ArrayList로 쓰인 다른 부분을 변경해줄 필요가 없습니다. 즉, 변경에 유연한 구조이죠. 이런 부분 때문에 ArrayList라는 구체 클래스로 선언하기 보다 List라는 인터페이스로 선언하는 것이 일반적입니다.

  • - 참고 링크:
    https://stackoverflow.com/questions/9852831/polymorphism-why-use-list-list-new-arraylist-instead-of-arraylist-list-n
    https://stackoverflow.com/questions/12321177/arraylist-or-list-declaration-in-java
    https://stackoverflow.com/questions/9852831/polymorphism-why-use-list-list-new-arraylist-instead-of-arraylist-list-n

👀 느낀점

https://stackoverflow.com/questions/12321177/arraylist-or-list-declaration-in-java

2920 음계 문제를 풀었을 때, descending을 decending으로 출력해서 채점실패 원인을 오랫동안 못찾았다.. 다음부터는 스펠링 잘봐야지..
2675 문자열 반복은 배열 없이 PRINT로 시도 해보았는데, 잘돼서 기분이 좋았다.(뭐가 더 좋은진 모르겠지만 ㅎㅎ..)

📆 앞으로 할일

  • SSAFY 자소서 탈고
  • 공모전 발표 준비
  • 비교 대상은 어제의 나

좋은 웹페이지 즐겨찾기