아무거나

추상클래스(abstract) 본문

Java & Kotlin/Java

추상클래스(abstract)

전봉근 2019. 8. 8. 14:16
반응형

[추상클래스]

강제로 부모클래스에서 자식클래스에게 메소드를 강제로 재정의(override)하게 할 수 있다. 그리고 이러한 방법으로 만들어진

클래스를 추상클래스라고 한다.

 

ex)

[부모]

// 추상클래스는 반드시 추상메소드 하나이상이 포함되어 있다.

public abstract class HeadQuarterStore {
    public HeadQuarterStore() {}
    public abstract void orderKimChijjige();
    public abstract void orderBuDaejjige();
}

 

[자식]

public class StoreNum1 extends HeadQuarterStore {

    public StoreNum1() {}

    @Override
    public void orderKimChijjige() {}

    @Override
    public void orderBuDaejjige() {}

}

 

* 부모 클래스의 메소드를 자식 클래스에서 변경할 일이 없다면, 일반 클래스를 이용한 상속이 좋습니다. 하지만 자식클래스에서

  꼭 재정의 해야 하는 부분이 있다면, 추상클래스를 이용하여 강제로 재정의 하게 해야 합니다.

 

ex2)

패키지는 package com.javalec.makecarex; 로 공통

 

public class MainClass {
    public static void main(String[] args) {
        StarCar starCarLowGrade = new StarCarLowGrade(CarSpecs.COLOR_RED, CarSpecs.TIRE_NORMAL, CarSpecs.DISPLACEMENT_2000, CarSpecs.HANDLE_NORMAL);
        starCarLowGrade.getSpec();
    }
}

 

public class CarSpecs {
    public static final String COLOR_RED = "레드";
    public static final String TIRE_NORMAL = "일반타이어";
    public static final int DISPLACEMENT_2000 = 2000;
    public static final String HANDLE_NORMAL = "일반핸들";
}

 

public class StarCarLowGrade extends StarCar {
    private int tax = 1000;

    public StarCarLowGrade(String color, String tire, int displacement, String handle) {
        super(color, tire, displacement, handle);
    }

    @Override
    public void getSpec() {
        System.out.println("***********************");
        System.out.println("색상 : "+color);
        System.out.println("타이어 : "+tire);
        System.out.println("배기량 : "+displacement);
        System.out.println("핸들 : "+handle);

        if(displacement > 2000) tax = 1500;
        System.out.println("세금 : "+tax);
    }
}

 

public abstract class StarCar {
    public String color;
    public String tire;
    public int displacement;
    public String handle;

    public StarCar(String color, String tire, int displacement, String handle) {
        this.color = color;
        this.tire = tire;
        this.displacement = displacement;
        this.handle = handle;
    }

    public abstract void getSpec();
}

 

[결과값]

***********************

색상 : 레드

타이어 : 일반타이어

배기량 : 2000

핸들 : 일반핸들

세금 : 1000​ 

반응형

'Java & Kotlin > Java' 카테고리의 다른 글

싱글턴 패턴(Singleton Pattern)  (0) 2019.08.09
인터페이스  (0) 2019.08.08
super 키워드  (0) 2019.07.04
오버라이드  (0) 2019.07.04
static  (0) 2019.07.04
Comments