미완성 설계도, 즉 인스턴스 생성 불가
미완성 메서드(추상 메서드)를 포함하고 있는 클래스를 말한다.abstract class 클래스이름{ } //추상 클래스는 키워드 'abstract'를 붙이면 된다
📺 예를 들어 같은크기의 TV라도 여러 종류의 모델이 있지만, 공통부분의 설계도는 동일할 것이다. 각각의 설계도를 따로 그리는 것보다 공통부분을 그린 미완성 설계도를 만들어놓고 이 미완성 설계도를 이용하여 각각의 설계도를 완성하는 것이 효율적인 방법이다.
즉 추상 클래스는 완전하지는 못하더라도 전체적인 틀을 갖추게 해준다 !
메서드는 선언부와 구현부(몸통)으로 구성되어 있다.
선언부만 작성하고 구현부는 작성하지 않은 채로 남겨 둔 메서드를 말한다.
설계만 해 놓고 실제 수행될 내용은 작성하지 않아서 미완성 메서드이다.abstract 리턴타입 메서드이름(); //추상 메서드도 키워드 'abstract'를 붙이면 된다
abstract class Player{//추상클래스 abstract void play(int pos); //추상메서드 abstract void stop(); //추상메서드 } class GamePlayer extends Player{ void play(int pos){ //추상메서드 구현 /*내용생략*/ } void stop(){ //추상메서드 구현 /*내용생략*/ } } abstract class AbstractPlayer extends Player{ void play(int pos){ //추상메서드 구현 /*내용생략*/ } }
추상 클래스로부터 상속받은 자손클래스는 오버라이딩을 통해 추상 클래스의
추상 메서드를 모두 구현해주어야 한다. (class GamePlayer)
만일 상속받은 추상메서드 중 하나라도 구현하지 않는다면 자손클래스 역시 추상클래스로 지정해주어야 한다. (class AbstractPlayer)
✅ 핵심
추상 클래스는 공통적인 틀을 제공하며 조상 클래스로서 중요한 역할을 한다.
❗️추상 클래스는 추상 메서드를 포함하고 객체화 할 수 없다는 점을 제외하고는
일반 클래스와 다르지 않음❗️
출처: 자바의 정석(도서,유튜브)