본문으로 바로가기

[JAVA] 추상 클래스 ( abstract class )

category 프로그래밍/JAVA 2020. 2. 14. 15:41
728x90
반응형

이번 포스팅에서는 추상 클래스에 대해 알아보겠습니다.

설명을 하고 예제를 보는 것보다 예제를 먼저 보고 설명을 드리는 것이 좋더라구요.

먼저 예제부터 본 후에 설명을 해드리겠습니다.

추상 클래스와 일반 클래스의 차이점을 위주로 보시는게 좋습니다.

예제를 한 번 이해해보시기 바랍니다.

 

 

 

 

 

 

--------------------------------------------------------------------------------------

-추상클래스 예제

 

abstract class TestCar {
    String modelName;
    int price;

    abstract void start();

    void stop() {
        System.out.println("자동차 멈춤");
    }
}

class Car1 extends TestCar {
    public Car1(String modelName, int price) {
        this.modelName = modelName;
        this.price = price;
    }

    @Override
    void start() {
        System.out.println("Car Start!!!!!!!!!!!!!");
        System.out.println("modelName : " + modelName);
        System.out.println("price : " + price);
    }
}

class Car2 extends TestCar{ 
    public Car2(String modelName, int price) {
        this.modelName = modelName;
        this.price = price;
    }

    @Override
    void start() {
        System.out.println("자동차 출발!!!!!!!!!!!!!");
        System.out.println("모델명 : " + modelName);
        System.out.println("가격 : " + price);
    }
}

public class CarMain {
    public static void main(String[] args) {
        Car1 car1 = new Car1("소나타", 2000);
        car1.start();
        car1.stop();

        Car2 car2 = new Car2("스파크", 1000);
        car2.start();
        car2.stop();
    }
}

 

--------------------------------------------------------------------------------------


추상 클래스는 반드시 하나 이상의 추상 메소드를 가지는 클래스입니다.

즉, 클래스 내부에 abstract로 시작되는 메소드가 하나 이상 필요합니다.

일반 클래스처럼 일반 변수, 일반 메소드를 선언, 구현할 수 있습니다.

일반 클래스는 구체적(메소드가 선언, 구현 되어 있음)이나, 추상 클래스는 추상적(선언만 되어 있음)입니다.

추상 클래스에서 추상 메소드는 선언만 되어 있습니다.

위의 소스코드에서는 TestCar라는 추상클래스를 선언하였습니다.

추상 클래스에는 추상 메소드인 start 메소드를 선언하였습니다.

또한, 추상 클래스는 선언만 되어 있기 때문에, 클래스 객체가 생성이 되지 않습니다.

일반 클래스가 추상 클래스를 상속받아 abstract 메소드를 구현(재정의) 해야 됩니다.

Car1, Car2는 TestCar 추상 클래스를 상속받았습니다.

상속은 extends를 사용합니다. TestCar 추상 클래스가 부모 클래스, Car1, Car2 는 자식 클래스가 됩니다.

부모 클래스가 가지고 있던 일반 변수, 메소드는 상속받은 자식 클래스에서 사용 가능합니다.

TestCar 클래스의 start 메소드가 선언만 되어 있기 때문에 Car1, Car2 클래스에서 구현 해야됩니다.

추상클래스를 사용하는 이유 중 하나는, 상속을 위해서 입니다.

부모 클래스에서 선언만 해두고, 자식 클래스에서 구현을 해버립니다.

728x90
반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

[JAVA] DAO? DTO? VO?  (0) 2020.03.03
[JAVA] 인터페이스 ( interface )  (0) 2020.02.17
[JAVA] 특정 format에 맞게 시간 출력  (0) 2020.02.14
[JAVA] JMS ( Java Message Service )  (0) 2020.02.11
[JAVA] MVC 개념  (0) 2020.02.03