7.6 추상클래스(abstract class)

jungnoeun·2022년 5월 24일
0

java

목록 보기
12/22

😀6.1 추상클래스

클래스를 설계도에 비유한다면, 추상클래스는 미완성 설계도에 비유할 수 있다.
클래스가 미완성이라는 것은 멤버의 개수와 상관없이 단지 미완성 메서드(추상메서드)를 포함하고 있다는 의미이다.
추상클래스로는 인스턴스를 생성할 수 없고 상속을 통해서 자손클래스에 의해서만 완성될 수 있다.

추상클래스는 키워드 'abstract'를 붙이면 된다.

abstract class 클래스이름 {
	//...
}






😉6.2 추상메서드(abstract method)

메서드는 선언부와 구현부로 구성되어있는데, 추상메서드는 선언부만 작성하고 구현부는 작성하지 않고 남겨둔 것을 의미한다.
추상메서드를 만드는 이유는 메서드의 내용이 상속받는 클래스에 따라 달라질 수 있기 때문이다.

추상메서드 역시 키워드 'abstract'를 붙여주고 구현부가 없으므로 괄호{} 대신 ';'를 적어준다.

/*주석을 통해 어떤 기능을 수해할 목적으로 작성하였는지 설명한다.*/
abstract 리턴타입 메서드이름();

추상클래스로부터 상속받은 자손클래스는 오버라이딩을 통해 조상인 추상클래스의 추상메서드를 모두 구현해줘야 한다. 추상메서드를 하나라도 구현하지 않는다면 해당 자손클래스 역시 추상클래스로 지정해줘야 한다.






✍6.3추상클래스의 작성

상속이 자손클래스를 만드는데 조상클래스를 사용하는 것이라면, 이와 반대로 추상화는 기존의 클래스의 공통부분을 뽑아내서 조상클래스를 만드는 것이다.

  • 상속계층도를 따라 내려갈수록 클래스는 점점 기능이 추가되어 구체화의 정도가 심해지며,
  • 상속계층도를 따라 올라갈수록 클래스는 추상화정도가 심해진다고 할 수 있다. 즉, 상속계층도를 따라 내려갈수록 세분화되며, 올라갈수록 공통요소만 남게된다.

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

자손클래스에서 오버라이딩해도 될텐데 굳이 추상클래스로 선언하는 이유?

  • 자손클래스에서 추상메서드를 반드시 구현하도록 강요하기 위해서이다.
  • 추상메서드로 정의되어있지 않고 빈 몸통만 가지도록 정의되어있으면 상속받는 자손클래스에서는 이 메서드들이 온전히 구현된 것으로 인식하고 오버라이딩을 통해 자신의 클래스에 맞지 않게 구현할 수 있기 때문이다.
profile
개발자

0개의 댓글