추상 클래스
추상 클래스는 이름 그대로 추상적인 개념을 제공하는 클래스이다. 따라서 실체인 인스턴스가 존재하지 않는다.
대신 상속으로 사용되고, 부모 클래스 역할을 담당한다.
- 추상 클래스는 클래스를 선언할 때 앞에 추상이라는 의미의 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 |