📋 추상 클래스
✅ 추상 클래스 특징
- 객체 직접 생성 불가.
- 다른 클래스에서 상속하여 사용.
- 하나 이상의 추상 메서드를 포함하고 있다면 반드시 추상 클래스로 정의.
✅ 추상 메서드 구현 강제
- 추상 클래스를 상속시 상속 받는 쪽에서 추상 메서드 구현을 강제함.
package section11.abstract_case;
abstract public class Animal {
String name;
// 추상 메서드
abstract void makeSound();
// 일반 메서드
void eat() {
System.out.println(name + " 냠냠");
}
}
class Dog extends Animal {
// 생성자
Dog(String name) {
this.name = name;
}
// 추상 메서드 구현
@Override
void makeSound() {
System.out.println(name + " 멍멍");
}
}
class Cat extends Animal {
// 생성자
Cat(String name) {
this.name = name;
}
// 추상 메서드 구현
@Override
void makeSound() {
System.out.println(name + " 냐옹");
}
}
package section11.abstract_case;
public class Ex1101 {
public static void main(String[] args) {
Dog dog = new Dog("Happy");
dog.eat();
dog.makeSound();
// Cat 객체 생성
Cat cat = new Cat("Coco");
cat.eat();
cat.makeSound();
}
}
package section11.abstract_case;
abstract public class Animal {
String name;
// 추상 클래스의 생성자 추가
Animal(String name) {
this.name = name;
}
abstract void makeSound();
void eat() {
System.out.println(name + " 냠");
}
}
class Dog extends Animal {
Dog(String name) {
// this.name = name;
super(name); // 추가
}
@Override
void makeSound() {
System.out.println(name + " 멍멍");
}
}
class Cat extends Animal {
Cat(String name) {
// this.name = name;
super(name); // 추가
}
// 추상 메서드 구현
@Override
void makeSound() {
System.out.println(name + " 냐옹");
}
}
✅ 추상 클래스, 추상 메서드 용도
- 자식 클래스 간 공통 필드명, 메서드명 통일(표준화)
- 메서드 구현 강제, 공통 규격 제공