본문 바로가기
프로그래밍언어/Java

[Java] : 추상 클래스, abstract class란?

by 오주현 2022. 1. 17.
반응형

추상 클래스란?

추상 클래스는 직접 인스턴스를 생성할 수 없는 클래스이다.

추상 클래스를 사용하기 위해서는 자식 클래스에서 추상 클래스를 상속 받고 자식 클래스의 인스턴스를 생성해야 한다.

추상 클래스를 만들기 위해서는 abstract 키워드를 앞에 붙여줘서 사용하면 된다.

예시 코드

abstract class CarSetting{
    int speed = 0;
    String color;

    void upSpeed(int speed) {
        this.speed += speed;
    }
}

먼저 abstract를 붙여 추상화 클래스를 만들어준다.

추상화 클래스에 speed와 color을 선언, 초기화 해주고 upSpeed()메서드를 만들어 준다.

class Sedan extends CarSetting {
}

Sedan은 추상 클래스를 상속 받은 상태로 놔둔다.

class Truck extends CarSetting {
}

Truck 클래스도 마찬가지로 추상 클래스를 상속 받은 상태로 놔둔다.

public class Car {
    public static void main(String[] args) {

        Car car1 = new CarSetting(); //오류 코드이다.

        Sedan sedan = new Sedan();
        System.out.println("Sedan 인스턴스 생성");

        Truck truck = new Truck();
        System.out.println("Truck 인스턴스 생성");

    }
}

각각 인스턴스를 생성해 주고 실행을 시켜본다.

CarSetting이 추상 클래스여서 인스턴스를 생성할 수 없다는 오류가 뜨게 된다.

public class Car {
    public static void main(String[] args) {

        //Car car1 = new CarSetting();

        Sedan sedan = new Sedan();
        System.out.println("Sedan 인스턴스 생성");

        Truck truck = new Truck();
        System.out.println("Truck 인스턴스 생성");

    }
}

그럼 추상 클래스의 인스턴스 만드는 코드를 주석 처리하고 돌려보면

이제야 정상적으로 오류 없이 출력이 되는 것을 확인할 수 있다.

이처럼 abstract를 사용한 추상 클래스는 인스턴스를 스스로 생성할 수 없기 때문에 상속을 통해 자식 클래스의 인스턴스를 생성하는 식으로 활용해야 한다.

반응형

댓글