Java

[인프런] 추상 클래스

sejin2 2024. 5. 28. 11:59

추상 클래스

추상 클래스는 이름 그대로 추상적인 개념을 제공하는 클래스이다. 따라서 실체인 인스턴스가 존재하지 않는다.
대신 상속으로 사용되고, 부모 클래스 역할을 담당한다.

  • 추상 클래스는 클래스를 선언할 때 앞에 추상이라는 의미의 abstract  키워드를 붙여주면 된다.
  • 추상 클래스는 기존 클래스와 완전히 같으나, new를 사용해 직접 인스턴스를 생성하지 못하는 제약이 추가된 것이다.

 추상 메서드

부모 클래스를 상속 받는 자식 클래스가 반드시 오버라이딩 해야 하는 메서드를 부모 클래스에 정의할 수 있다.
이를 추상메서드라고 한다. 추상메서드는 추상적인 개념을 제공하는 메서드로 실체가 존재하지 않고, 메서드 바디가 없다.

  • 추상 메서드는 선안할 때 메서드 앞에 abstract 키워드를 붙인다.
  • 추상 메서드가 하나라도 있는 클래스는 추상 클래스로 선언해야 한다.
    • 그렇지 않으면 컴파일 오류가 발생한다.
    • 추상 메서드는 메서드 바디가 없다. 따라서 작동하지 않는 메서드를 가진 불완전한 클래스이기 때문에 직접 생성하지 못하도록 추상 클래스로 선언해야 한다.
  • 추상 메서드는 상속 받는 자식 클래스가 반드시 오버라이딩 해서 사용해야 한다. 
    • 그렇지 않으면 컴파일 오류가 발생한다.
    • 추상 메서드는 자식 클래스가 반드시 오버라이딩 해야 하기 때문에 메서드 바디 부분이 없다. 바디 부분을 만들면 컴파일 오류가 발생한다. 
    • 오버라이딩 하지 않으면 자식도 추상 클래스가 되어야 한다.

=> 추상 클래스 덕분에 인스턴스 생성할 문제를 근본적으로 방지해주고, 자식 클래스를 만들 때 오버라이딩 하지 않을 문제를 방지해준다😮😮

순수 추상 클래스 

모든 메서드가 추상 메서드인 추상 클래스를 의미한다.
순수 추상 클래스는 실행 로직을 가지고 있지 않으며, 다형성을 위한 부모 타입으로서의 껍데기 역할만 제공한다.

순수 추상 클래스의 특징

  • 인스턴스를 생성할 수 없다.
  • 상속시에 자식은 모든 메서드를 오버라이딩 해야 한다.
  • 주로 다형성을 위해 사용한다. 

 

 

 

공부 내용: [인프런] 김영한의 실전 자바 - 기본편

'Java' 카테고리의 다른 글

[인프런] 객체 지향  (0) 2024.05.28
[인프런] 인터페이스  (0) 2024.05.28
[인프런] 다형성과 메서드 오버라이딩  (0) 2024.05.28
instanceof  (0) 2024.05.27
[인프런] 다형성  (0) 2024.05.27