728x90
추상 클래스란?
- 다른 클래스들 사이에서 공통된 특성과 동작을 가지는 메서드들을 정의합니다.
- 일반 클래스와 다르게 인스턴스화(직접적으로 사용하여 객체를 생성)할 수 없습니다.
- 주로 자식 클래스에게 공통된 인터페이스를 제공하는데 사용됩니다.
- 공통된 인터페이스를 가지고 있음을 보장하여 코드의 재사용성과 유지 보수성을 높일 수 있습니다.
- 추상 클래스를 상속받은 클래스는 추상 클래스의 추상 메서드를 구현(overriding)해야만 인스턴스화 할 수 있습니다.
- 추상 클래스 선언 시, abstract 키워드를 사용해 선언해 사용합니다.
- 추상 메서드는 메서드의 시그니처(이름, 매개변수, 반환 타입)만을 선언하며 구현부(중괄호, { })를 작성하지 않습니다.
아래는 예시 코드입니다.
// 추상 클래스 정의
abstract class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public abstract void makeSound(); // 추상 메서드
public void eat() {
System.out.println(name + "가 먹고있습니다.");
}
}
// 추상 클래스를 상속받은 구체적인 클래스
class Cat extends Animal {
public Cat(String name) {
super(name);
}
//추상 클래스의 추상 메서드를 구현
public void makeSound() {
System.out.println("야옹!");
}
}
class Dog extends Animal {
public Dog(String name) {
super(name);
}
//추상 클래스의 추상 메서드를 구현
public void makeSound() {
System.out.println("멍멍!");
}
}
public class Main {
public static void main(String[] args) {
Cat cat = new Cat("야옹이");
cat.makeSound(); // "야옹!" 출력
cat.eat(); // "야옹이가 먹고 있습니다." 출력
Dog dog = new Dog("멍멍이");
dog.makeSound(); // "멍멍!" 출력
dog.eat(); // "멍멍이가 먹고 있습니다." 출력
}
}
'Java' 카테고리의 다른 글
인터페이스와 추상 클래스의 차이 (0) | 2023.05.25 |
---|---|
인터페이스 (0) | 2023.05.25 |
super와 super() (0) | 2023.05.24 |
생성자란? this와 this()의 차이 (0) | 2023.05.24 |
인스턴스 멤버와 클래스 멤버 (0) | 2023.05.24 |