23. 추상 클래스

thsamajiki·2022년 10월 25일
0

JAVA

목록 보기
21/24

추상 클래스란?

추상 클래스는 미완성된 클래스를 뜻하며, 선언되어 있지만 구현되지 않은 미완성의 메소드(추상 메소드)를 포함하고 있는 클래스일 때 astract 키워드를 class 앞에 붙여 준다.

💡 public abstract class 클래스이름 { // 필드, 생성자, 메소드 작성 // 미완성된 추상 메소드 선언 }

추상 클래스는 추상 메소드를 포함하고 있다는 것을 제외하고는 일반 클래스와 같다.

특징

  • 미완성 클래스(abstract 키워드 사용)자체적으로 객체 생성 불가 → 반드시 상속하여 객체 생성
  • abstract 메소드가 포함된 클래스는 반드시 abstract 클래스abstract 메소드가 없어도 abstract 클래스 선언 가능
  • 클래스 내에 일반 변수, 메소드 포함 가능
  • 객체 생성은 안되지만 참조형 변수 타입으로는 사용 가능

장점

  • 일관된 인터페이스 제공
  • 꼭 필요한 기능 강제화(공통적이나 자식클래스에서 특수화 되는 기능)

추상 메소드

몸통({})이 없는 메소드를 의미하며, 상속 시 반드시 구현해야 하는, 오버라이딩이 강제화되는 메소드이다.

💡 [접근제한자] abstract 리턴타입 함수이름(); // 몸통{}이 없다!

abstract class Player { // 추상클래스
		abstract void play(int pos); // 추상메소드
		abstract void stop();        // 추상메소드
}

class AudioPlayer extends Player { // AudioPlayer : 완성된설계도 / Player : 미완성설계도
		void play(int pos) { ... } // 추상메소드를 구현
		void stop() { ... }        // 추상메소드를 구현
}

abstract class AbstractPlayer extends Player {
		void play(int pos) { ... } // 추상메소드를 구현
}

AudioPlayer ap = new AudioPlayer(); // OK
Player p = new AudioPlayer(); // OK

추상클래스 작성

여러 클래스에 공통적으로 사용될 수 있는 클래스를 바로 작성하기도 하고, 기존의 클래스의 공통적인 부분을 뽑아서 추상클래스로 만들어 상속하도록 하는 경우도 있다.

💡 추상화

  • 클래스간의 공통점을 찾아내서 공통의 조상을 만드는 작업 구체화

  • 상속을 통해 클래스를 구현, 확장하는 작업

profile
안드로이드 개발자

0개의 댓글