반응형
interface
- interface 키워드 사용
- static final 변수 사용 가능 => 내부의 모든 필드는 public static final 상수, 모든 메소드는 추상 메소드
- public 접근제어자 사용 가능
- 상속 키워드 : implements
- 다중 상속 가능 => 클래스에 다중 구현 지원, 인터페이스끼리는 다중 상속 지원
- 내부의 모든 메서드는 public abstract로 정의 (defalut 메소드 제외)
- 공통 기능이 필요할 때 마다 추상 메서드를 정의해놓고 구현하는 식 => 각 클래스의 목적에 맞게 기능을 구현
- 클래스와 별도로 구현 객체가 같은 동작을 한다는 것을 보장하기 위해 사용
- 객체간의 결합도를 낮춤
abstract
- abstract 키워드 사용, 하나 이상의 추상 메소드를 갖고 있는 클래스
- 변수, 접근제어자,메소드 사용 제한 없음 => 추상 메소드 외에 일반 클래스와 같이 일반적은 필드, 메소드, 생성자를 가질 수 있음
- 상속 키워드 : extends
- 다중 상속 불가능
- 하위클래스들의 공통점들을 모아 추상화하여 만든 클래스
- 클래스간의 연관 관계를 구축하는 것에 초점 => 자신의 기능들을 하위 클래스로 확장 시키는 느낌
- 하위 클래스에서 추상 메소드 구현 강제
- 코드의 재사용성을 높임
공통점
- 추상 메소드를 가지고 있어야함
- 인스턴스화 할 수 없음
- 모두 자바에서 추상화를 구현하는데 사용되는 키워드
차이점
- 추상클래스는 상속받아서 기능을 이용하고 확장시키기 위한 것
- 인터페이스는 함수의 껍데기만 있고, 그 함수의 구현을 강제함
=> 인터페이스는 구현이 완전히 생략된 메서드와 상수를 가지며, 다중 상속을 지원하는 반면, 추상 클래스는 일부 메서드의 구현을 제공하고 일반 메서드도 가질 수 있으며, 단일 상속만을 지원합니다. 인터페이스는 서로 다른 클래스 간의 관계를 정의하고, 추상 클래스는 공통된 기능을 추상화하여 코드의 재사용성을 높이는 데 사용됨
'공부 기록 > 개념정리' 카테고리의 다른 글
Socket ? WebSocket ? Socket.IO ? 봐도 봐도 어려운 소켓 (1) (3) | 2024.12.04 |
---|---|
[객체 지향] JAVA _ 접근 제어자, static, 객체와 클래스 (0) | 2024.04.19 |
박싱 vs 언박싱 , 타입 캐스팅 (0) | 2024.04.07 |
인코딩 vs 디코딩 , 직렬화(serialization) (0) | 2024.04.07 |
JVM (자바 가상 머신) (0) | 2024.03.30 |