TIL

[22.07.12] 코드스테이츠 day14

Min_dev 2022. 7. 12. 23:23
반응형

매일 데일리 회고 작성하기

계획 단계 - 정규학습시간 전

오늘 나의 학습 목표는 무엇인가요?

객체 지향 프로그래밍(OOP)의 심화 과정인 다형성과 추상화 이해하기
코드를 직접 설계하고 구현해보기
오늘 학습할 내용 중에 이미 알고 있는 내용은 무엇인가요?

X

점검 및 평가 단계 - 정규학습시간 후

오늘 학습 내용 중 새롭게 배운 내용은 무엇인가요?
- 다형성
- 추상화
- 인터페이스
오늘 새롭게 학습한 내용을 다른 사람에게 설명할 수 있나요?

객체지향의 핵심이라 할 수 있는 다형성과 추상화를 배웠다.
다형성이란 하위 클래스의 객체가 상위 클래스 타입의 참조변수로 들어가 상위 클래스의 참조변수를 통해서 하위 클래스의 객체를 참조할 수 있다.
물론 이 경우 사용할 수 있는 멤버의 개수는 상위 클래스의 멤버의 수가 된다.
그리고 다형성의 핵심 중 하나는 상위 클래스의 타입으로 하위 클래스 타입의 객체를 참조하는 것은 가능하지만 그 반대는 성립하지 않는다.

추상화는 간단히 말하자면 기존 클래스들의 공통적인 요소들을 뽑아서 상위 클래스를 만들어 내는 것이다.
반대로 상위 클래스에 들어가는 공통적인 요소들을 가진 하위 클래스를 만드는 것도 동일하다.

인터페이스란 추상메서드와 상수들로만 구성되어 있으며 class 키워드 대신 interface 키워드를 사용한다.
인터페이스의 구현은 "구현하다" 라는 의미를 가진 implements 키워드를 사용한다는 점에서 상속과는 차이가 있다.
또한 인터페이스를 구현하는 클래스는 해당 인터페이스에 정의된 모든 추상메서드를 구현해야함.
즉 어떤 클래스가 특정 인터페이스를 구현한다는 것은 그 클래스에게 인터페이스의 추상메서드를 반드시 구현하도록 강제하는 것을 의미한다.
앞서 배웠던 상속은 다중 상속이 허용되지 않았지만, 인터페이스는 다중 구현이 가능하다.
이유는 상속은 메서드들이 이미 구현이 완료되어 있어 다중 상속을 받을시 충돌 문제가 발생할 수 있지만, 인터페이스는 메서드의 구현이 완벽히 이루어지지 않은 상황이기 때문에 충돌이 발생할 일이 없다.

오늘 학습한 내용 중 아직 이해되지 않은 불확실한 내용은 무엇인가요?

인터페이스가 뭔지는 알겠는데 이걸 왜 사용하는 건지 잘 모르겠다.
추상 클래스는 추상메서드는 있지만 기본 클래스와 같은 것이고
인터페이스는 추상메서드와 상수들로만 구성이 되어 있다.
근데!!!!! 이걸 왜 나눠서 쓰는지 ... 어떨때 추상클래스를 사용하고, 어떨때 인터페이스를 사용하는지 감이 안잡힌다.
뭐 계속 사용하다보면 언젠가는 감이 잡히겠지만 현재로서는 답답한 마음이다ㅠㅠ
이해되지 않은, 불확실한 내용을 보완하기 위해서 나는 무엇을 할 수 있을까요?

반복적인 학습과 코드작성으로 익숙해지는 수 밖에 없는 것 같다.
구글링과 유튜브를 통해서 관련 자료들도 열심히 찾아보고 해야겠다.
나의 오늘 학습 만족도는 몇 점인가요?

★★★☆☆
이해가 안가는 내용들이 너무 많다.ㅜㅜ
대략적인 개념들은 알겠지만, 어떤식으로 활용하는지 모르겠고.....
내용이 중복되는 것들도 많아 헷갈린다.
반응형