추상클래스(abstract class) - 정의

  • 미완성 메소드를 포함하고 있거나, 객체(Object)를 생성하지 않으려는 클래스

  • 추상메서드를 포함할 수 있음

  • 클래스와 차이점

    • 클래스 : 설계도

    • 추상클래스 : 미완성 설계도



추상클래스의 필요성

  • 자체로는 클래스로서의 역할을 못함

  • 부모클래스로서 중요한 의미

    • 새로운 클래스를 작성하는데 있어서 바탕이 됨
  • 추상 클래스를 만들게되면, 다형성을 이용하여 자식클래스들을 추상부모클래스 타입으로 선언할 수 있게 됨

    • 추상메서드들도 사용할 수 있다는게 Object클래스타입 배열과의 차이



추상메서드(abstract method) - 정의

  • 선언부만 작성해놓고 구현부(body)는 작성하지 않은 채로 남겨둔 것

  • 설계만 해두고 실제 수행될 내용을 작성하지 않았기 때문에 미완성 메소드

  • 선언시 메서드 앞에 abstract를 붙여주고, 구현부가 없으므로 괄호 { } 대신 세미콜론’;’을 붙여줌

    • abstract 리턴타입 메서드이름();
  • 추상클래스를 상속받는 자식클래스의 경우, 오버라이딩을 통해 추상클래스를 모두 구현해야 함

    • 하나라도 구현하지 않으면 그 자식클래스도 abstract(추상) 클래스로 선언해야함
      → 자식클래스가 구현했으면 하는 메소드들을 추상메소드로 지정
  • (메서드 사용자 측면에서) 메서드 선언부가 구현부보다 중요하므로, 추상메서드도 중요함

    • 메서드를 사용하는 쪽에서는 구현은 중요하지 않고 어떻게 선언되었는지 알고있다면, 해당 메서드를 사용할 수 있음



추상메서드의 필요성

  • 메서드의 내용이 상속받는 클래스에 따라 달라질 수 있기 때문

    • 부모 클래스에서는 선언부만 작성

    • 주석을 덧붙여 어떤 기능을 수행할 목적으로 작성되었는지 알려줌

    • 실제 내용은 자식 클래스에서 구현하도록 비워둠

    • 추상클래스를 상속받는 자식 클래스는 부모 클래스의 추상 메서드를 상황에 맞게 적절히 구현해주어야 함