반응형
이번 글에서는 추상 클래스 내 추상 메서드를 정의하고,
자식 클래스에서 이를 오버라이딩하여 개별 동작을 구현하는 방법을 학습합니다.
이를 통해 공통 인터페이스는 유지하면서,
각 객체가 자신만의 동작을 정의할 수 있게 됩니다.
📦 추상 클래스 (Animal.java)
package ch07.sec10.exam02;
public abstract class Animal {
public void breathe() {
System.out.println("숨을 쉽니다.");
}
public abstract void sound(); // 추상 메서드 (몸체 없음)
}
📦 자식 클래스 – 강아지 (Dog.java)
package ch07.sec10.exam02;
public class Dog extends Animal {
public void sound() {
System.out.println("멍멍");
}
}
📦 자식 클래스 – 고양이 (Cat.java)
package ch07.sec10.exam02;
public class Cat extends Animal {
public void sound() {
System.out.println("야옹");
}
}
📌 실행 클래스 (AbstractMethodExample.java)
package ch07.sec10.exam02;
public class AbstractMethodExample {
public static void main(String[] args) {
Dog dog = new Dog();
Cat cat = new Cat();
dog.sound(); // 멍멍
cat.sound(); // 야옹
animalSound(new Dog());
animalSound(new Cat());
}
public static void animalSound(Animal animal) {
animal.sound(); // 다형성 활용
}
}
🖥 실행 결과
멍멍
야옹
멍멍
야옹
💬 코드 설명
- Animal 클래스는 추상 클래스이며,
sound() 메서드는 추상 메서드(몸체 없음)로 선언됨 - 자식 클래스인 Dog, Cat은 반드시 sound()를 오버라이딩해야 함
→ 하지 않으면 컴파일 오류 발생 - animalSound(Animal animal) 메서드는
부모 타입으로 자식 객체를 받아 다형성을 적용한 예시
📌 간단 정리
클래스 | 오버라이딩한 메서드 동작 |
Dog | sound() → 멍멍 출력 |
Cat | sound() → 야옹 출력 |
💡 포인트 정리
- 추상 메서드는 자식 클래스가 반드시 구현해야 함
- 추상 클래스는 공통 동작(breathe) + 개별 동작(sound) 설계에 적합
- animalSound() 메서드는 다형성을 이용하여 다양한 객체 처리
- 추상 클래스는 템플릿 설계로 자주 사용됨
📌 정리하자면,
추상 메서드를 통해 강제적으로 메서드를 구현하게 만들고,
다형성을 통해 확장성과 유연성을 확보할 수 있는 구조를 만들 수 있습니다.
'프로그래밍 > JAVA' 카테고리의 다른 글
70. default 메서드 – 인터페이스 안에 기본 기능 구현하기 (0) | 2025.05.08 |
---|---|
69. 인터페이스 상수와 메서드 구현 – 공통 규칙으로 기능 통일하기 (0) | 2025.05.08 |
68. 인터페이스와 다형성 – 구현 객체를 바꿔도 유지되는 구조 (1) | 2025.05.08 |
66. 추상 클래스(Abstract Class) - 직접 생성 불가, 공통 기능 정의 (0) | 2025.05.08 |
65. 매개변수의 다형성 – 하나의 메서드로 여러 객체 동작시키기 (0) | 2025.05.08 |
64. 필드의 다형성 – 하나의 타입으로 다양한 객체 다루기 (1) | 2025.05.07 |