코드스테이츠 Day14
<객체 지향 프로그래밍 심화>
- 다형성(Polymorphism)
- 추상화(Abstraction)
- 공통 요소를 모아 상위 클래스를 만드는 것. 공통 요소 집합화.
- abstract 기타 제어자 이용. 추상 클래스 = 추상 메서드가 하나 이상 들어있는 클래스
- 추상 메서드는 메서드 바디가 없다. 시그니처만 있음
- 즉, 추상 클래스는 미완성의 클래스이므로, 객체 생성이 불가능. 자식 클래스로 객체를 생성할 수 있다.
- 추상 메서드는 메서드 오버라이딩을 통해 자식 클래스에서 이용되며, 이를 통해 하위 클래스의 상황에 맞는 메서드 구현 가능.
- 메서드 오버라이딩 != 메서드 오버로딩
- 인터페이스(Interface)
- final : 변경 및 확장이 불가능하다는 키워드(형용사, 기타 제어자)
- interface : 추상 메서드, 상수, static/default 메서드만 멤버로 가짐. 따라서, 추상 클래스보다 더 높은 추상도.
- public static final 상수, public abstract 메서드 : 일부 및 전부 생략 가능
- implements로 구현. 클래스 상속과 달리, 다중 구현 가능(하위 클래스와 충돌할 변수 멤버가 없기 때문에).
- 인터페이스 내의 추상 메서드는 반드시 하위 클래스에서 메서드 오버라이딩 되어야 함(강제)
- 코드의 추상화할수록(공통 요소를 모아놓을수록), 나중에 코드 유지/보수가 쉽다. 구체화할수록 하나하나 손대야 하지만, 공통 요소를 묶어 놓으면 메인에는 손 안 대도 되니까. (역할/선언 과 구현 분리)
- 기타 정리한 것들
<느낀 점>
공부할 때는 몰랐는데, 정리하니까 오늘 양 많았군...
점점 기타 정리하는 것들, 즉 추가로 공부하는 것들이 불어나고 있다.
보면 이해는 가지만, 스스로 처음부터 설계를 하고 짜라고 하면 엄두가 안 남...
처음이라 그런 거겠지..? 내일은 실습 과제인데 과연 어떨지..
줌 미팅 때 코드 짜는 거 보면서, 핵심 코드를 지키기위해(즉, 변화 요소가 나타나더라도 핵심 코드를 최대한 수정 사항이 없도록, 건드리지 않기 위해) 주변에 수많은 추상 클래스와 인터페이스가 늘어난다는 느낌을 받았다.
약간 왕을 지키기 위한 신하들의 느낌..?
신하가 너무 많아져서 관리하기 빡세겠다는 생각을 함.
그래도 구체화때문에 노가다하는 것보다는 낫겠지만..
저녁에 운동(복싱) 다녀오면 4시간 정도가 사라져서(나갈 준비, 이동 시간, 운동 시간, 샤워 시간, 저녁 거른 대신 간단한 야식 먹기), 밤에 블로깅하고 나면 11시가 넘는다. 공부 한 30분만 더 하고 내일을 위해 자야겠다.