728x90
추상클래스
- 클래스 내에 하나 이상의 추상메서드가 포함된 경우나, abstract로 정의된 클래스를 추상클래스라고 한다.
인터페이스
- 모든 메서드가 추상 메서드인 경우이다.
공통점
- 추상메서드라는 내용에 대한 구현이 없는 선언부만 가지고 있는 메서드를 가지고 있으며, 독립적으로 객체를 생성할 수 없다.
- 여러 곳에서 사용될 공통된 기능에 대한 구현을 강제하기 위해 사용한다.
차이점
- 추상 클래스는 상속받은 하위 클래스에 자신의 기능을 확장시키기 위해 사용한다.
- 인터페이스는 인터페이스에 정의된 메서드를 각 구현 객체의 목적에 맞게 같은 동작을 만들어내기 위해 사용한다.
- 추상 클래스는 이를 상속할 각 객체들의 공통점을 찾아 추상화 시켜놓은 것으로 상속 관계를 타고 올라갔을 때 같은 부모 클래스를 상속하며 부모 클래스가 가진 기능을 구현하는 경우에 사용한다.
- 인터페이스는 상속관계를 타고 올라갔을 때 다른 부모 클래스를 상속하더라도 같은 기능이 필요한 경우에 사용한다.
- 추상 클래스는 단일 상속만 되며, 인터페이스는 다중 상속이 가능하다.
추상 클래스의 기능
- 상속 관계에 있어 새로운 클래스를 작성하는데 매우 유용하다. 메서드의 내용이 상속을 받는 클래스에 따라 달라지기 때문에 상위 클래스에서 선언부만 작성하고 실제 구체적인 내용은 하위 클래스에 작성한다면 변경 사항이 있어도 유연하게 대응할 수 있다.
인터페이스의 기능
- 역할과 구현을 분리시켜 복잡한 구현의 내용과 그 내용의 변경에 관계없이 해당 기능을 사용할 수 있고, 같은 인터페이스를 구현한 객체들이 같은 동작을 할 수 있게 한다.
참고
728x90
'어딘가에 맞춰질 퍼즐 조각들' 카테고리의 다른 글
@Value 애너테이션으로 환경변수를 설정하고 참조하는 방법 1분 요약 정리 (0) | 2023.01.12 |
---|---|
프로젝트 용어 정리 (0) | 2022.12.19 |
DDD(Domain Driven Design) & 애그리거트(Aggregate) (0) | 2022.11.22 |
[JAVA] 메서드 오버로딩(Overloading)과 오버라이딩(Overriding) (1) | 2022.09.19 |
[JAVA] public class VS class (0) | 2022.09.17 |