[TIL] 내일배움캠프 12.27

Asher Park·2022년 12월 28일
0

내일배움캠프_TIL

목록 보기
23/39
post-thumbnail

오늘 강의를 들으면서 객체 지향의 개념에 대해 공부했다.

객체 지향

상속과 추상화의 개념과 예시코드를 보면서 궁금한 점이 생겼다.

상속의 개념에선 부모 클래스의 특징들을 자식 클래스들이 상속받아 사용할 수 있고,
추상화의 개념에선 클래스들의 공통적인 부분들을 모아 상위 개념으로 선언하는 것이면,

모두 부모 클래스를 선언하고 extends를 사용하여 상속받으면 되는 거 아냐?
interface 왜 씀?

하는 궁금증이 생겼다.

열심히 검색을 해보고, 내 나름대로의 이해한 것을 정리해 보았다.

클래스 vs 인터페이스

  • 클래스는 미완성 설계도! 블루프린트!
  • 인터페이스는 밑그림만 그려져있는 기본 설계도!

클래스의 특징은

  • 변수들의 state를 정의 할 수 있다.
  • 다중 상속은 불가능!

인터페이스의 특징은

  • 다른 클래스를 작성하는데 도움을 주는 목적.
  • 다중 상속 가능
  • 타입을 정의하는 용도로 많이 사용

사용의도

솔직히 인터페이스의 모든 역할들을 클래스에서 처리할 수 있다.
클래스가 좀 더 포괄적인 개념이라고 보면 된다.

그러면 공통적인 기능을 모두 부모 클래스에 메소드로 선언 해두고, 상속받아 자식 클래스에서 사용하면 되는데 인터페이스는 왜 필요할까?

바로 사용의도가 다른 것이다.

클래스의 상속은 각 클래스들의 공통점을 찾아 부모 클래스로 추상화 시켜놓은 것으로, 상속받은 클래스들이 같은 특징을 가지고 같은 동작을 한다는 것을 보장하기 위해 사용.

상위, 하위 클래스의 연관 관계, 하위 클래스들이 상위 클래스로 설명 되는가 와 같은 것에 초점이 맞춰진다고 생각한다.

인터페이스는 각 클래스의 기능에 초점이 맞춰져 있다고 생각한다.
클래스에서 공통적으로 필요한 기능이지만 다른 동작을 해야는 경우,
인터페이스로 기능을 정의를 하고 상속을 받은 클래스에서 필수로 기능을 구현해야 한다.

만약 부모클래스에 모든 기능들을 구현해 놓으면,
상속받은 자식이 그 기능을 필요로 하지 않더라도 사용이 가능한 경우가 발생할 수 있다.

따라서, 클래스는 상하의 관계에 대해 많이 사용이되고,
인터페이스는 각 클래스들의 기능과 특징에 많이 사용이된다.

참고자료
https://overcome-the-limits.tistory.com/617
https://myjamong.tistory.com/150

profile
배움에는 끝이없다

0개의 댓글