고급 java
java Interface vs abstract class
Good Program Good Programmer
2020. 12. 13. 10:25
인터페이스 설명(한번 따라해볼 것)
https://wikidocs.net/217
https://wikidocs.net/269
그렇다면 인터페이스와 추상클래스는 무슨 차이점이 있는 걸까?
https://yaboong.github.io/java/2018/09/25/interface-vs-abstract-in-java8/
https://yaboong.github.io/design-pattern/2018/09/27/template-method-pattern/
이 두 글을 비교하며 읽어보면 두 차이를 알 수 있다.
가장 두드러지는 차이점은
추상클래스는 상속받은 자식클래스들이 부모인 추상 클래스에서 public abstract로 구현된 메소드만 override해야 하고 나머지는 추상 클래스에 구현된 그대로 사용할 수도 있고 다중 상속이 불가능하다. 따라서 동일한 메소드나 필드가 여러 자식클래스에서 사용될 경우 추상클래스를 사용하는 것이 좋다.
인터페이스는 인터페이스를 implement한 메소드에서 반드시 override되어야 하고 다중 implement가 가능하다.
따라서 비슷한 기능의 메소드나 필드가 여러 자식클래스에서 사용될 경우 인터페이스를 사용하는 것이 좋다.
정도 인 것 같다.
하지만 차이를 알면 알수록 추상클래스와 인터페이스의 차이점이 거의 없다는 것을 알 수 있다.
걍 인터페이스가 더 간단하고 다중상속도 지원하니 인터페이스 쓰다가 나중에 과제나 아니면 회사에서 쓰라고 하면 그때 추상클래스를 써도 될 것 같다. 사실 클래스를 상속할 때 굳이 추상클래스를 안쓰고 일반 클래스를 안써도 되기 때문에 추상클래스는 거의 쓸 일이 없는 것 같다.