Back-end/Java
추상클래스
douStory
2021. 8. 4. 14:59
728x90
추상메소드는 속빈 껍데기
- 물려받은 빚이다. 물려받은 일을 본인한테 맞게 해야한다. 무시할 수 없고 꼭 구현해야한다.
- 그리고 빚을 다값을때까지 클레스 앞에는 abstract 가 붙는다 like.. 빚쟁이마크
- 그리고 대대손손 물려준다고 이해하면 편하다
추상클레스안에 템플릿 메소드를 넣어놓고 메소드 수행 순서를 고정시켜 놓을 수도 있다.
템플릿 메소드는 final 로 선언해서 고정한다
근데 왜 오버라이딩을 써도 되는데 왜 추상메소드로 사용할까?
설계단계에서 용이하기때문에.. 꼭 구현해야하는 메소드를 놓치지 않을 수 있다..
그러나 실무에서 잘 쓰지는 않는다고 한다..
밑의 예제를 써보면 추상클래스에 대한 이해가 쉽다..
// Cartest
package carDemo;
public class CarTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Bus bus = new Bus();
AutoCar autoCar = new AutoCar();
bus.run();
autoCar.run();
bus.refuel();
autoCar.refuel();
bus.takePassenger();
autoCar.load();
bus.stop();
autoCar.stop();
}
}
//car
package carDemo;
public abstract class Car {
public abstract void run();
public abstract void refuel();
public void stop() {
System.out.println("차가 멈춥니다.");
}
}
//Bus
package carDemo;
public class Bus extends Car {
public void run() {
System.out.println("버스가 달립니다.");
}
public void refuel() {
System.out.println("천연가스를 주유합니다.");
}
public void takePassenger() {
System.out.println("승객을 버스에 태웁니다.");
}
}
// AutoCar
package carDemo;
public class AutoCar extends Car {
public void run() {
System.out.println("자동차가 달립니다.");
}
public void refuel() {
System.out.println("휘발류를 주유합니다.");
}
public void load() {
System.out.println("짐을 실습니다.");
}
}