요즘 스프링부트에 빠져서 웹 개발을 하다보니 자바에 대한 중요성을 점점 잃어가는거
같아서 복습할겸 중요 포인트들을 글로 남기기로 했습니다 🙂
추상 클래스 (Abstract class)
추상 클래스는 구현부 내부에 추상 메소드가 하나 이상 포함되있거나 abstract 로 정의되어있는 경우를 의미합니다.
abstract class 를 상속 받은 클래스는 (하위 클래스) 필요에 의해 정의된 메소드를 overriding 하여서 사용합니다!
- 추상 클래스는 new연산자를 통하여 객체를 생성할 수 없습니다.
- 추상 클래스는 단일 상속만 가능합니다. 고로 일반변수를 가질 수 없습니다.
- 공통된 필드와 메소드를 정의해놓고 일반 클래스가 상속을 받을시 코드를 작성하는 시간을 절약할수 있습니다.
- 추상 클래스와 일반 클래스(하위 클래스)는 상속관계에 놓여있습니다
- 추상 클래스는 동일한 부모를 가지는 클래스들을 묶는 개념입니다. 상속을 받아서 기능을 확장하는것이 주 목적입니다.
인터페이스 (Interface)
인터페이스는 단순합니다. 모든 메소드가 추상메소드인것을 인터페이스라고 부릅니다.
- 인터페이스도 추상 클래스와 마찬가지로 new 연산자를 사용하여 객체를 생성할 수 없습니다.
- 인터페이스는 구현 객체가 같은 동작을 한다는 것을 보장하는 것이 목적입니다!
- 인터페이스는 추상 클래스와 반대로 다중 상속이 가능합니다🙂
- 인터페이스는 static final 필드만 가질 수 있다 ⇒ public static final 이 생략되있는겁니다.
- 기존에는 인터페이스에 일반 메소드를 구현할 수 없었지만, 자바 8버전부터 default 예약어를 통해 일반 메소드구현이 가능합니다.
Interface & Abstract Class 공통점
- new 연산자를 사용하여 객체를 생성할 수 없습니다.
- 추상 클래스를 extends로 상속받은 자식들과 인터페이스를 implements하고 구현한 자식들만 객체 생성 가능합니다.
- 추상 클래스와 인터페이스는 메소드 선언부만 있고 구현은 없는 클래스입니다
Interface & Abstract Class 차이점
- 추상 클래스는 단일 상속 | 인터페이스는 다중 상속
- 추상 클래스는 상속을 받아서 기능을 확장시키는것이 목적입니다 !
- 인터페이스는 상속을 받아서 특정 메소드가 반드시 존재하도록 강제성을 띄우는것, 즉 구현 객체들이 같은 역할 동작을 하는것을 보장하기 위한것입니다 !
최종 정리
모듈화 시키는것이 어떻게 보면 추상 클래스의 역할이고
인터페이스는 특정한 틀을 지어놓고, 나머지 클래스들은 그 틀에 맞게 코드를 작성하는
일종의 블루프린트 같은 역할을 하는것 이다! 라고 생각할 수 있겠네요 🙂
728x90
'Java' 카테고리의 다른 글
Java Collection ApI 핵심 정리 (0) | 2023.01.13 |
---|---|
윤년과 평년을 구별하는 프로그래밍 (0) | 2023.01.13 |
Static 이란? (0) | 2023.01.13 |
2ndArray 2차원배열 (0) | 2023.01.13 |
AutoBoxing, AutoUnboxing 이란? (0) | 2023.01.13 |