2025-08-09 15:05
Tags: 소프트웨어 공학
추상 클래스
- 미완성된 설계도 역할
- 직접 객체 인스턴스를 생성할 수는 없음
- 상속받아 오버라이딩 통해 이렇게 완성하라는 틀과 구조 만들어 강제화
- 중복 제거 라는 기본적인 목표와 구조 강제 가능
- 인터페이스와 비슷해보이지만 규약 강제 말고는 다름
- 여러 클래스가 공통된 상태나 기능 공유 → 추상 클래스
- 서로 다른 종류 클래스 동일한 기능, 다중 상속 → 인터페이스
구분 | 추상 클래스 (Abstract Class) | 인터페이스 (Interface) |
---|---|---|
목적 | 관련성이 높은 클래스 간의 **공통된 특징(상태, 행동)**을 공유하고 확장. (IS-A 관계) | 서로 관련 없는 클래스들에게 **특정 기능(행동)**을 부여. (CAN-DO 관계) |
상속/구현 | 단일 상속만 가능 (extends ) | 다중 구현 가능 (implements ) |
멤버 | 추상/구현 메서드, 변수, 생성자 모두 가능 | 기본적으로 추상 메서드, static final 상수만 가능. (Java 8+ 부터 default , static 메서드 추가) |
키워드 | abstract , extends | interface , implements |
비유 | 설계도. (고양이, 개 → 포유류) | 자격증/플러그인. (사람, 로봇 → ‘운전할 수 있음’) |