TIL

추상클래스

류정근 2024. 4. 27. 23:20
추상클래스!!! 이해라도 해보자!!!

 

추상클래스

이름 그대로 추상적인 개념을 제공하는 클래스 이기 때문에 실체인 인스턴스가 존재하지 않는다.

상속을 목적으로 사용하고 부모클래스 역할을 담당한다.

 

사용방법

ex)

abstract class AbstractAnimal {...}

클래스를 선언할 때 앞에 abstract 키워드를 붙여준다.

추상 클래스는 기존 클래스와 같다. 다만 new AbstractAnimal() 와 같이 직접 인스턴스를 생성하지 못하는 제약이 추간된 것이다.

 

추상 메서드

이름 그대로 추상적인 개념을 제공하는 메서드 이기 때문에 실체가 존재하지 않고, 메서드 바디가 없다.

상속 받는 자식 클래스가 반드시 오버라이딩 해야 하는 부모 클래스에 정의할 수 있다.

 

사용방법

public abstract void sound();

메서드를 선언할 때 앞에 abstract 키워드를 붙여준다.

※추상 메서드가 하나라도 있는 클래스는 추상 클래스로 선언해야 한다. --> 지키지 않으면 컴파일 오류 발생

추상 메서드는 메서드 바디가 없다. 따라서 작동하지 않는 메서드를 가진 불완전한 클래스이다.

※추상 메서드를 상속 받는 자식 클래스는 추상 메서드를 반드시 오버라이딩 해서 사용해야 한다.

 

sound()` 는 `abstract` 가 붙은 추상 메서드이다. 이 메서드는 자식이 반드시 오버라이딩 해야 한다.

만약 move 앞에도 abstract 를 붙여 추상 메서드로 만든다면 모든 하위클래스는 move를 오버라이딩 해야된다.

 

 

정리

지금까지 설명한 제약을 제외하고 나머지는 모두 일반적인 클래스와 동일하다. 추상 클래스는 제약이 추가된 클래스일
뿐이다. 메모리 구조, 실행 결과 모두 동일하다.

 

● 추상 클래스 덕분에 실수로 `Animal` 인스턴스를 생성할 문제를 근본적으로 방지해준다.
● 추상 메서드 덕분에 새로운 동물의 자식 클래스를 만들때 실수로 `sound()` 를 오버라이딩 하지 않을 문제를 근본
 적으로 방지해준다.

●주로 다형성을 위해 사용된다.

 

출처 : 김영한의 실전 자바 - 기본편

'TIL' 카테고리의 다른 글

상속과 오버라이딩(Overriding)  (1) 2024.04.30
인터페이스  (0) 2024.04.29
상속 정복하기  (0) 2024.04.27
계산기 만들기  (3) 2024.04.26
TIL(4)  (4) 2024.04.24