반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바문법
- HashMap
- 단위테스트
- Eclipse
- 자바스크립트
- javascript
- list
- junit
- ArrayList
- Array
- Java
- vscode
- math
- 테스트자동화
- 인텔리제이
- 이클립스
- html
- js
- java테스트
- 문자열
- 정규식
- json
- 배열
- IntelliJ
- CSS
- 자바
- input
- Visual Studio Code
- string
- junit5
Archives
- Today
- Total
어제 오늘 내일
[Java] 추상클래스란? (abstract class) 본문
Java에서 추상클래스(abstract class)는 객체를 직접 생성할 수 없고, 상속을 통해서만 사용되는 클래스입니다.
완성되지 않은 메서드(추상 메서드)를 포함할 수 있으며, 공통 기능은 제공하되 세부 동작은 자식 클래스가 구현하도록 강제하는 역할을 합니다.
1. 추상클래스의 기본 개념
추상클래스는 abstract 키워드를 사용하여 선언합니다.
특징
- 객체 생성 불가
- 추상 메서드 포함 가능(선언만 있고 구현 없음)
- 일반 메서드(구현된 메서드)도 포함 가능
- 공통적인 속성과 동작을 정의하는 데 사용
형식:
abstract class Animal {
abstract void sound(); // 추상 메서드
}
설명
- sound()는 구현이 없으므로 자식 클래스가 반드시 구현해야 함
2. 추상클래스 사용 목적
- 여러 클래스가 공통된 구조를 사용하도록 강제
- 공통 기능은 부모에서 제공하고, 세부적인 동작은 자식이 정의
- 상속을 통해 일관된 설계를 만들 수 있음
예를 들어, "동물"은 울다(sound)라는 개념을 가지지만, 구체적인 소리는 동물별로 다르므로 추상 메서드로 선언하는 것이 자연스럽습니다.
3. 추상 메서드(abstract method)
추상 메서드는 구현이 없는 메서드이며, 자식 클래스가 반드시 오버라이딩해야 합니다.
abstract void sound();
자식 클래스에서 구현:
class Dog extends Animal {
@Override
void sound() {
System.out.println("멍멍");
}
}
4. 추상클래스에서 일반 메서드도 포함 가능
추상클래스는 완전한 클래스가 아니지만, 일반 메서드도 포함할 수 있습니다.
abstract class Animal {
void eat() {
System.out.println("먹습니다");
}
abstract void sound();
}
설명
- eat()은 모든 동물이 공통으로 사용하는 기능
- sound()는 동물마다 다르게 구현해야 하는 기능
5. 추상 클래스는 객체 생성 불가
Animal a = new Animal(); // ❌ 오류: 추상클래스는 인스턴스화 불가
하지만 자식 클래스는 객체 생성 가능:
Animal d = new Dog();
d.sound();
6. 전체 예제
abstract class Animal {
abstract void sound();
void sleep() {
System.out.println("잠을 잡니다");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("야옹");
}
}
public class Main {
public static void main(String[] args) {
Animal a = new Cat(); // 업캐스팅
a.sound(); // 야옹
a.sleep(); // 잠을 잡니다
}
}
출력
야옹
잠을 잡니다
7. 추상클래스 vs 인터페이스 비교
구분 추상클래스 인터페이스
| 구분 | 추상 클래스 | 인터페이스 |
| 객체 생성 | 불가 | 불가 |
| 상속 | 단일 상속만 가능 | 다중 구현 가능 |
| 메서드 | 추상 + 일반 메서드 모두 포함 | 기본적으로 추상, default·static 가능 |
| 목적 | 공통 기능 제공 + 필요한 부분만 구현 강제 | 기능의 규칙 제공 |
8. 정리
- 추상클래스는 완성되지 않은 클래스
- 객체 생성 불가, 반드시 상속받아 사용
- 추상 메서드는 자식이 구현해야 함
- 공통 기능을 제공하면서 구조적 설계를 가능하게 함
반응형
'IT > Java' 카테고리의 다른 글
| [Java] final 키워드 (변수, 메서드, 클래스) (0) | 2025.12.25 |
|---|---|
| [Java] 추상 클래스와 인터페이스 차이 (0) | 2025.12.24 |
| [Java] 인터페이스(interface) 사용법 및 예제 (0) | 2025.12.23 |
| [Java] 객체 타입 확인 (instanceof) (0) | 2025.12.23 |
| [Java] 클래스 형변환 (업캐스팅, 다운캐스팅) (0) | 2025.12.22 |
Comments
