Search

추상 클래스

추상 클래스 (Abstract Class)

미완성 메소드(추상 메소드)를 포함하고 있는 클래스 다른 클래스와 동일하게 멤버변수와, 메소드, 생성자 보유 가능
클래스를 설계도에 비유한다면, 추상 클래스는 미완성 설계도
추상 클래스만으로는 인스턴스 생성이 불가하며, 상속을 통한 자손 클래스로 생성 가능
abstract를 붙여 추상 클래스 생성
abstract class 클래스이름 { ... }
Java

추상 메소드 (Abstract Method)

선언부는 작성, 구현부는 작성하지 않은 채 남겨 둔 메소드
설계만 하고 수행될 내용은 작성하지 않은 미완성 메소드
미완성으로 남겨두는 이유?
→ 메소드 내용이 상속받는 클래스에서 달라질 수 있기 때문
조상 클래스에선 선언부만 작성, 주석을 통해 어떤 기능 수행 목적이지만 명시
실제 수행될 내용은 자손 클래스에서 구현
abstract를 붙여 추상 메소드 생성
// 주석을 통해 어떤 기능을 수행할 목적인지 설명 abstract 리턴타입 메소드이름();
Java
자손 클래스에선 오버라이딩을 통해 추상 메소드를 구현
abstract class Player { // 추상 클래스 abstract void play(int pos); abstract void stop(); } class AudioPlayer extends Player { void play(int pos) { ... } // 추상메소드 구현 void stop() { ... } // 추상 메소드 구현 } abstract class AbstractPlayer extends Player { void play(int pos) { ... } // 추상 메소드 구현 }
Java

추상 클래스의 작성

상속 : 자손 클래스를 만드는 데 조상 클래스를 사용
구체화 : 상속을 통해 클래스를 구현, 확장
추상화 : 기존 클래스의 공통 부분을 뽑아 조상 클래스를 만드는 것
Player 클래스
CDPlayer 클래스
조상 클래스에서아무 내용 없는 일반 메소드로 작성하고, 자손 클래스에서 오버라이딩해도 쓰면 별반 차이가 없어 보이는데 abstract를 붙여 추상 클래스로 만들어주는 이유?
→ 자손 클래스에서 반드시 추상 클래스를 구현하도록 강요하기 위해
기존 클래스에서 공통 부분을 뽑아 추상 클래스 만들기
공통 조상 클래스 타입의 참조변수 배열을 통해 서로 다르종류의 인스턴스를 하나로 다루기

참고 자료