반응형
이번 글에서는 자바의 추상 클래스(Abstract Class)에 대해 학습합니다.
공통된 속성과 기능은 추상 클래스에 정의하고,
객체는 직접 생성할 수 없으며, 자식 클래스에서 기능을 완성하여 사용하게 됩니다.
📦 추상 클래스 (Phone.java)
package ch07.sec10.exam01;
public abstract class Phone {
String owner;
Phone(String owner) {
this.owner = owner;
}
void turnOn() {
System.out.println("폰 전원을 켭니다.");
}
void turnOff() {
System.out.println("폰 전원을 끕니다.");
}
}
📦 자식 클래스 (SmartPhone.java)
package ch07.sec10.exam01;
public class SmartPhone extends Phone {
SmartPhone(String owner) {
super(owner);
}
void internetSearch() {
System.out.println("인터넷 검색을 합니다.");
}
}
📌 실행 클래스 (PhoneExample.java)
package ch07.sec10.exam01;
public class PhoneExample {
public static void main(String[] args) {
// Phone phone = new Phone(); // (X) 추상 클래스는 객체 생성 불가
SmartPhone sp = new SmartPhone("홍길동");
sp.turnOn();
sp.internetSearch();
sp.turnOff();
}
}
💬 코드 설명
- Phone 클래스는 abstract 키워드가 붙은 추상 클래스
- 생성자와 일반 메서드를 가질 수 있음
- 하지만 객체를 직접 생성할 수 없음
- SmartPhone 클래스는 Phone을 상속받은 자식 클래스
- 생성자를 통해 owner 값 초기화
- 추가 기능 internetSearch() 정의
- PhoneExample에서는 Phone은 생성 불가
- 대신 SmartPhone 객체를 생성하여 상속받은 메서드 사용
💻 실행 결과
폰 전원을 켭니다.
인터넷 검색을 합니다.
폰 전원을 끕니다.
📌 간단 정리
추상 클래스 특징 | 설명 |
abstract 키워드 | 클래스 앞에 붙여 선언 |
객체 생성 불가 | new로 인스턴스 생성 불가 |
생성자 존재 가능 | 자식 클래스에서 super()로 호출 |
상속 필수 | 자식 클래스에서 사용 가능 |
일반 메서드 정의 가능 | 추상 메서드 없이도 추상 클래스 사용 가능 |
💡 포인트 정리
- 추상 클래스는 공통 기능을 미리 정의하거나,
일부만 구현하고 나머지는 자식 클래스에게 맡기는 구조 - 객체 생성은 불가능하지만, 상속을 통해 자식 클래스에서 사용 가능
- 공통 기능은 그대로 상속하고, 필요한 기능은 자식 클래스에서 추가하거나 재정의
- 다형성 + 템플릿 설계 시 매우 유용하게 사용됨
'프로그래밍 > JAVA' 카테고리의 다른 글
69. 인터페이스 상수와 메서드 구현 – 공통 규칙으로 기능 통일하기 (0) | 2025.05.08 |
---|---|
68. 인터페이스와 다형성 – 구현 객체를 바꿔도 유지되는 구조 (1) | 2025.05.08 |
67. 추상 메서드와 다형성 – 자식이 반드시 구현해야 하는 기능 (0) | 2025.05.08 |
65. 매개변수의 다형성 – 하나의 메서드로 여러 객체 동작시키기 (0) | 2025.05.08 |
64. 필드의 다형성 – 하나의 타입으로 다양한 객체 다루기 (1) | 2025.05.07 |
63. 다운캐스팅(Downcasting)과 참조 타입의 한계 (0) | 2025.05.07 |