오늘 강의를 들으면서 객체 지향의 개념에 대해 공부했다.
상속과 추상화의 개념과 예시코드를 보면서 궁금한 점이 생겼다.
상속의 개념에선 부모 클래스의 특징들을 자식 클래스들이 상속받아 사용할 수 있고,
추상화의 개념에선 클래스들의 공통적인 부분들을 모아 상위 개념으로 선언하는 것이면,모두 부모 클래스를 선언하고 extends를 사용하여 상속받으면 되는 거 아냐?
interface 왜 씀?
하는 궁금증이 생겼다.
열심히 검색을 해보고, 내 나름대로의 이해한 것을 정리해 보았다.
클래스의 특징은
인터페이스의 특징은
솔직히 인터페이스의 모든 역할들을 클래스에서 처리할 수 있다.
클래스가 좀 더 포괄적인 개념이라고 보면 된다.
그러면 공통적인 기능을 모두 부모 클래스에 메소드로 선언 해두고, 상속받아 자식 클래스에서 사용하면 되는데 인터페이스는 왜 필요할까?
바로 사용의도가 다른 것이다.
클래스의 상속은 각 클래스들의 공통점을 찾아 부모 클래스로 추상화 시켜놓은 것으로, 상속받은 클래스들이 같은 특징을 가지고 같은 동작을 한다는 것을 보장하기 위해 사용.
상위, 하위 클래스의 연관 관계, 하위 클래스들이 상위 클래스로 설명 되는가 와 같은 것에 초점이 맞춰진다고 생각한다.
인터페이스는 각 클래스의 기능에 초점이 맞춰져 있다고 생각한다.
클래스에서 공통적으로 필요한 기능이지만 다른 동작을 해야는 경우,
인터페이스로 기능을 정의를 하고 상속을 받은 클래스에서 필수로 기능을 구현해야 한다.
만약 부모클래스에 모든 기능들을 구현해 놓으면,
상속받은 자식이 그 기능을 필요로 하지 않더라도 사용이 가능한 경우가 발생할 수 있다.
따라서, 클래스는 상하의 관계에 대해 많이 사용이되고,
인터페이스는 각 클래스들의 기능과 특징에 많이 사용이된다.
참고자료
https://overcome-the-limits.tistory.com/617
https://myjamong.tistory.com/150