티스토리 뷰

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("짐을 실습니다.");
	}
}

'Back-end > Java' 카테고리의 다른 글

다형성  (0) 2021.08.05
인터페이스  (0) 2021.08.05
상속  (0) 2021.08.03
개체 참조  (0) 2021.08.03
static  (0) 2021.08.02
댓글