프로그래밍/자바

추상클래스와 인터페이스 차이에 대해

스루나루 2024. 2. 15. 20:48
728x90
728x90

 

 

서론

 

임마 둘은 먼가 하는 건 비슷한데 막상 꼬집으려고 하니까 말문이 막힘 

그래서 다시 정리할 겸 찾아보려고 함 

 

 

추상 클래스와 인터페이스 

 - 자바에서 다형성을 구현하기 위한 개념이며 객체지향의 핵심 요소

 - 결국 추상 메서드를 구현하는 것이 목적이다. 

 

  추상 메서드 인터페이스
변수 종류 제한없음 static final : 상서문 가능
정의 하나 이상의 추상 메서드를 포함하는 클래스 오직 추상 메서드와 상수만을 가짐
접근 제어자 제한 없음 public만 가능 
다중 상속 불가 가능 
의미 is - a : ~이다 
ex) 사람은 동물이다
has - a : ~를 할 수 있다.
ex) 사람은 말할 수 있다.
사용 상속을 받아 기능을 확장
공통 속성 및 메서드를 가지는 클래스를 정의
미완성 설계도 : 자신의 기능을 하위로 확장 시켜서 설계도를 점점 완성시킴 
구현한 클래스의 동일한 동작을 보장
상속받는 클래스가 어떤 메서드를 구현해야하는지 정의 
기본 설계도 : 메서드 기능을 대충 파악할 수 있고 개발자가 구현을 함
공통점 인스턴스화 할 수 없음 : 다만 다형성은 가능 A a = new B()
추상 메서드를 가지고 있으며 상속받은 클래스는 그 추상 메서드를 반드시 구현해야함 

 

 

1) 추상 클래스를 쓸 때 

 - 공통 메서드나 필드가 중복되는 경우 통합을 위해 사용

 - 요구사항과 함께 구현 세부 정보 일부 기능만 지정 

 - 상속할 각 객체들의 공통점(변수, 메서드)을 찾아 추상화한 것 : 클래스와 의미있는 연관 관계를 구축 즉 상속에 대한 계층 구조가 명확할 때 쓰자 

 - 일반 변수나 일반 메서드도 존재 가능 굳이 오버라이딩 안 해도 되는 거라 편리 다만 추상메서드는 다 구현해야함 

 

2) 인터페이스란?

 - 클래스가 어떤 메서드를 구현해야하는지 공통된 동작을 정의하는데 사용 

 - 메서드 형태만 서로 공유해서 구현하는 경우나 필드 말고 메서드만 쓰고 싶을 때 사용하자 

 - 클래스와 별도로 구현 객체가 같은 동작을 하는 것 보장하는 것에 초점을 둠 

 

인터페이스의 존재 이유 
※ 그냥 추상 클래스에다가 여러 추상 메서드 정의한 다음 이거 쓰면 인터페이스 굳이 필요없지 않냐? 
 - 자바가 다중상속이 안 되니까 인터페이스로 기능별 나눠서 다중 구현을 하여 명확하게 기능을 정의한다. 
 - 추상  메서드만 선언해서 쓸 거면 인터페이스를 쓰고 , 일반 메서드나 필드도 필요하면 추상 클래스를 쓰자 
 - 인터페이스든 추상 클래스든 상속받은 넘은 그 안에 추상 메서드를 다 구현해야함 
 - 보통 인터페이스를 많이 쓰는데 이는 인터페이스는 메서드 선언과 내용만 설계해두면 얼추 무슨 기능인지 예상이 되니까 다른 사람들과 페어 코딩을 할 수 있다

 

결론

 

 - 개발할 때 좀 공통적인 부분을 가지는 클래스는 상속으로 묶고, 기능 같은 걸 규정하고 싶을 때는 인터페이스를 쓰자

 

 

참고

 

https://alecture.blogspot.com/2011/05/abstract-class-interface.html

 

자바의 추상클래스(abstract class)와 인터페이스(interface)

자바의 상속 개념을 공부할때 빠지지 않고 등장하는 것이 바로 오늘 배울 추상클래스(abstract class)와 인터페이스(interface)다. 무슨 공통점이 있는지 무슨 차이점이 있는지 말도 애매모호하고 서로

alecture.blogspot.com

https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-vs-%EC%B6%94%EC%83%81%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%99%84%EB%B2%BD-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

 

☕ 인터페이스 vs 추상클래스 용도 차이점 - 완벽 이해

인터페이스 vs 추상클래스 비교 이 글을 찾아보는 독자분들은 아마도 이미 인터페이스와 추상클래스 개념을 학습한 뒤에 이 둘에 대하여 차이의 모호함 때문에 방문 했겠지만, 그래도 다시한번

inpa.tistory.com

 

728x90
728x90