Java

추상 클래스

KJihun 2023. 5. 25. 16:42
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