Laguage
[Java] Abstract Classes in Java
kkkkkkkkkkkk
2022. 7. 1. 00:43
추상 클래스란 공통된 기능과 속성들을 정의한 클래스를 말한다.
공통된 기능은 메서드를 구현하여 한 곳에서 사용할 수 있게 정의해두고 공통된 기능인데 내부 로직을 다르게 만들어야 한다면 메서드 시그니처만 정의 해주면 된다.
추상 클래스는 is a 관계에 사용되는 것을 알고 들어가자.
다음으로 is a 관계인 “테슬라와 현대차는 자동차다" 로 예를 들어볼것입니다.
테슬라는 자율주행 모드를 지원하는 대표적인 차량이다. 현대차도 최근에 자율주행 모드를 지원하는 차량을 많이 판매하고 있다.
두 차량의 공통된 기능은 자율주행모드 다. 하지만 자율주행모드를 구현하는 로직은 서로 다를 것이다. 같으면 내부 스파이가 있을 수 도!!!!
차량들을 클래스로 만들어 구현해보자.
- 자동차 → 상위 클래스
public abstract class Car {
// fields....
public abstract void modeChange();
}
- 테슬라
public class Tesla extends Car {
// fields....
@Override
public void modeChange() {
System.out.println("테슬라 자율주행 로직");
}
}
- 현대
public class Hyundai extends Car {
// fields....
@Override
public void modeChange() {
System.out.println("현대 자율주행 로직");
}
}
이렇게 공통된 기능을 한 곳에 모아 추상 클래스로 정의 하여 상속하는 방식으로 구현 해보았다.