본문 바로가기

Study/Java

[Java] 추상클래스

추상클래스

추상클래스는 미완성 설계도이다. 미완성 메소드를 포함하고 있다는 의미이며, 자손클래스에 의해서만 완성될 수 있다. 새로운 클래스를 작성할 때 어느정도 틀을 갖춘 상태에서 시작할 수 있다는 편리함이있다.

  • 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