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
반응형