추상클래스
추상클래스는 미완성 설계도이다. 미완성 메소드를 포함하고 있다는 의미이며, 자손클래스에 의해서만 완성될 수 있다. 새로운 클래스를 작성할 때 어느정도 틀을 갖춘 상태에서 시작할 수 있다는 편리함이있다.
- abstract 제어자를 사용하면 된다.
추상메소드
메소드는 선언부와 구현부로 구성되어있는데, 추상메소드는 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨두는 것이다.
abstract를 이용해 메소드를 정의하는 이유는, 해당 제어자를 붙이면 자손클래스를 작성할 때 무조건 오버라이딩을 해야하기 때문이다. 추상클래스 설계 시 필수적으로 구현해야하는 메소드의 경우 추상메소드를 사용해주도록하자.
public abstract class Car {
public String color;
public abstract void sound();
public void doorOpen(){
System.out.println("문이 열립니다"); // 구현부가 존재하는 일반 메소드도 가능하다.
}
}
Car 클래스를 간단하게 정의했다. 이제 SportsCar와 Truck클래스를 만들어 이를 상속받아보려한다!
public class SportsCar extends Car {
public SportsCar(String color) {
this.color = color;
}
@override
public void sound() {
System.out.println("왜앵!");
}
}
public class Truck extends Car {
public Truck(String color) {
this.color = color;
}
@override
public void sound() {
System.out.println("덜컹덜컹");
}
}
Truck과 SportsCar는 Car라는 추상 클래스의 메소드를 오버라이딩해 각 클래스에 맞게 구현부를 작성했다.
즉, 똑같은 클래스를 상속받아 같은 메소드를 사용했음에도 추상 메소드의 오버라이딩을 통해 각자 다른 결과를 도출할 수 있게 된다는 것이다!
'Study > Java' 카테고리의 다른 글
[Java] 내부 클래스 (0) | 2020.03.15 |
---|---|
[Java] 다형성 (0) | 2020.03.13 |
[Java] 자바의 제어자 (0) | 2020.03.12 |
[Java] 패키지와 import (0) | 2020.03.12 |