반응형
매주 월요일, 목요일마다 회사 동기들과 Java 스터디를 진행하고 있는데
여주밀탱크로 불리는 사나이 영훈이의 내용이 좋아서 내가 찾은 정보를 더하여 어디 한번 쌈빡하게 정리해보고자 한다.
▶ 추상 클래스
추상 클래스는 관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우 (부모-자식 관계)
공통의 필드나 같은 부모 클래스의 기능을 사용하거나, 공통으로 사용할 구현된 메소드가 필요할 때 사용한다.
▶ 인터페이스
인터페이스는 서로 관련성이 없는 클래스들이 인터페이스를 구현하게 되는 경우
다중 상속이 필요하거나, 구현 방식 정의 없이 추상화만 필요할 때 사용한다.
추상 클래스(abstract class) | 인터페이스(interface) |
ㆍ다중 상속 불가능 ㆍ일반 메소드와 추상 메소드 모두 가능 ㆍ상속시 추상 메소드만 구현해도 됨 ㆍ클래스이므로 다중 상속이 불가능 ㆍ속도면에서 인터페이스보다 빠름 |
ㆍ다중 상속 가능 ㆍ추상 메소드만 사용 가능 ㆍ상속시 모든 메소드를 구현해야 함 ㆍ여러 다중 인터페이스 구현 가능 ㆍ속도면에서 추상 클래스보다 느림 |
추상 클래스
- 추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스 (미완성 설계도라고도 표현)
- class 앞에 "abstract" 예약어를 사용하여 상속을 통해서 구현해야 한다는 것을 알려주고
선언부만 작성하는 추상 메서드를 선언할 수 있음
추상 클래스를 사용하는 경우
- 추상 클래스는 이를 상속할 각 객체들의 공통점을 찾아 추상화 시켜놓은 것ㅇ으로,
상속 관계를 타고 올라갔을 때 같은 부모 클래스를 상속하며 부모 클래스가 가진 기능들을 구현할 때 - 상속 받을 클래스들이 공통으로 가지는 메소드와 필드가 많아 중복으로 멤버 통합 할 때
- 멤버에 public 이외의 접근자(protected, private) 선언이 필요한 경우
- non-static, non-final 필드 선언이 필요한 경우 (각 인스턴스에서 상태 변경을 위한 메소드가 필요할 때)
- 요구사항과 함께 구현 세부 정보의 일부 기능만 지정했을 때
- 하위 클래스가 오버라이드하여 재정의하는 기능들을 공유하기 위한 상속 개념을 사용할 때
인터페이스
- 인터페이스는 기본 설계도라고 함
- 인터페이스도 추상클래스처럼 다른 클래스를 작성하는데 도움을 주는 목적으로 작성하고
클래스와 다르게 다중상속(구현)이 가능
인터페이스를 사용하는 경우
- 어플리케이션의 기능을 정의해야 하지만 그 구현 방식이나 대상에 대해 추상화 할 때
- 서로 관련성이 없는 클래스들을 (형제 관계) 묶어주고 싶을 때
- 다중 상속(구현)을 통한 추상화 설계를 해야할 때
- 특정 데이터 타입의 행동을 명시하고 싶은데, 어디서 그 행동이 구현되는지 신경 쓰지 않아도 되는 경우
- 클래스와 별도로 구현 객체가 같은 동작을 한다는 것을 보장하기 위해 사용
반응형
'공부 > Java' 카테고리의 다른 글
[Java] 정규표현식과 Pattern 클래스 (0) | 2023.04.24 |
---|---|
[Java] 예외 처리 코드 (다중 catch / 두 개 이상의 예외 처리 |) (0) | 2023.04.12 |
[Java] 자바에서 말하는 라이브러리와 자바 표준 모듈 개념 정리 (Java.lang import 필요없는 이유) (0) | 2023.04.10 |
[Java] 중첩 인터페이스 (0) | 2023.04.10 |
[Java] 생성자나 메소드 내부에서 선언되는 로컬 클래스(local class) (0) | 2023.04.10 |