Back-end/JAVA / / 2025. 1. 9. 15:33

[JAVA] 추상 클래스 (Abstract Class)란 무엇인가?

반응형

추상클래스란?

추상 클래스는 인스턴스화 할 수 없는 클래스로 객체를 직접 생성할 수 없는 클래스를 말한다. 추상 클래스는 주로 다른 클래스에서 상속받아 사용되는 기복적 틀을 제공하기 위해 사용된다. 또한 구현되지 않은 추상 메소드를 포함할 수 있으며, 이는 자식 클래스에서 구현되어야 한다.

 

추상 클래스의 특징

  • 인스턴스화할 수 없다
public abstract class Vehicle {

    public void hello() {
        System.out.println("나는 탈것이야");
    }
    
public class VehicleTest {

    public static void main(String[] args) {
        Vehicle vehicle = new Vehicle();   // Cannot instantiate the type Vehicle 컴파일 에러 발생
        vehicle.hello();

    }
}
  • 추상 메소드를 가질 수 있다
public abstract class Vehicle {

    abstract void hello();
}
// 이와 같이 추상 메서드를 정의하고 자식 클래스에서 정의하여 사용할 수 있다.

 

추상 클래스의 사용 예시

abstract class Animal {
    // 추상 메소드: 자식 클래스에서 반드시 구현해야 함
    abstract void makeSound();

    // 일반 메소드: 자식 클래스에서 오버라이드할 수 있음(안해도 됨)
    public void sleep() {
        System.out.println("잠들어라!");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("멍멍");
    }
}

class Main {
    public static void main(String[] args) {
        // Animal animal = new Animal(); // 오류: 추상 클래스는 객체를 생성할 수 없음
        Animal dog = new Dog();
        dog.makeSound(); // "멍멍"
        dog.sleep(); // "잠들어라!"
    }
}

 

추상 클래스와 인터페이스의 차이

구분 추상 클래스 (Abstract Class) 인터페이스 (Interface)
상속 단일 상속만 가능 다중 상속 가
메소드 구현 추상 메소드와 구현된 메소드 모두 가능 추상 메소드만 가능
(Java 8부터 default 메소드 가능)
인스턴스 변수 인스턴스 변수를 가질 수 있음 인스턴스 변수를 가질 수 없음
(상수는 가능- static final )
생성자 가질 수 있음 가질 수 없음

 

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유