[JAVA] 추상 클래스

Coastby·2022년 9월 27일
0

LIKELION Back-End School

목록 보기
19/61

추상클래스

○ 추상클래스란?

클래스를 설계도에 비유하면 추상클래스는 미완성 설계도에 비유할 수 있다. 클래스가 미완성이라는 것은 멤버의 개수에 관련된 것이 아니라, 미완성 메서드 (추상 메서드)를 포함하고 있다는 의미이다.

추상클래스로 인스턴스는 생성할 수 없으며, 추상클래스는 상속을 통한 자손클래스에 의해서만 완성될 수 있다.

추상클래스 용도

추상클래스 자체로는 클래스로서의 역할을 못하지만, 새로운 클래스를 작성하는데 있어서 바탕이 되는 조상클래스로서 중요한 의미를 갖는다.

여러 클래스에서 공통적으로 사용될 수 있는 클래스를 바로 작성하기도 하고, 기존의 클래스의 공통적인 부분을 뽑아서 만들기도 한다.

  • 추상화 : 클래스간의 공통점을 찾아내서 공통의 조상을 만드는 작업
  • 구체화 : 상속을 통해 클래스를 구현, 확장하는 작업

추상 클래스를 통해서
1) 상황에 따라 동작 방법이 달라지는 메소드는 추상 메소드로 만들어서 하위 클래스에서 구현한다.
2) 공통적으로 사용하는 메소드는 상위에 두어서 코드의 중복, 유지보수의 편의성을 높여준다.

💡 상속을 강제한다.
추상 메서드로 정의되면 자식 클래스에서 반드시 오버라이드하여야 한다.

추상클래스 구조

  • 추상 메서드가 하나라도 있으면 클래스는 추상클래스가 된다.
    • 추상 메서드를 포함하지 않을 수도 있다. 포함하지 않더라도 인스턴스를 생성할 수 없다.
  • 일반 클래스처럼 생성자, 멤버변수, 메서드를 가질 수 있다.
abstract class 클래스 이름 {
	abstract 리턴타입 메서드이름();
}

추상메서드

  • 추상메서드는 선언부만 있고, 구현부 (바디)는 작성하지 않은 것이다.
  • 상속받는 클래스 (자손 클래스)는 오버라이딩을 통해 추상 메서드를 모두 구현하여야 한다.
    • 하나라도 구현하지 않는다면 자손클래스도 추상 클래스로 지정해야 한다.
/*주석을 통해 어떤 기능을 수행하는 지 적어준다.*/
abstract 리턴타입 메서드이름

💡 인터페이스가 있어서 추상클래스는 거의 쓰지 않는다.

profile
훈이야 화이팅

0개의 댓글