본문으로 바로가기

자바 추상클래스(abstract class)

category 코딩/Java 2016. 10. 23. 20:39







추상클래스


자바에는 추상클래스라는 클래스가 있다. 우리가 알고 있는 클래스와는 달리 일종의 미완성의 클래스이다. 보통 클래스가 new로 인스턴스를 생성할 수 있지만, 추상클래스는 그것이 불가능하다. 오직 상속을 통해서 자손 클래스에 의해서만 완성되는 클래스이다.


그럼 이런 미완성 클래스가 무슨 역할을 할까? 단독으로는 아무 역할을 못한다. 그러나 새로운 클래스를 작성하는데 밑바탕이 되는 역할을 할 수 있다. 새로운 클래스 작성 시 아무것도 없는 상태에서 시작하는 것보다는 불완전하지만 어느 정도 틀을 갖춘 상황에서 시작하는 것이 나을 것이다.


추상클래스를 자동차로 예를 들면 자동차도 용도, 크기 등에 따라 종류가 나뉜다. 그러나 기본적인 부분은 모두 동일할 것이다. 바퀴, 엔진, 운전석 등과 같은 것들이다. 여기에서 공통된 부분을 따로 떼어내어 미완성의 설계도로 만든 것이 추상클래스라 할 수 있다. 클래스를 작성할 때도 공통된 부분을 추상클래스로 만들어두고 그 외 필요한 부분은 각각 클래스에서 구현하면 효율적으로 클래스를 구현할 수 있다.




추상메서드


추상 클래스는 보통 클래스와 달리 특이한 형태의 메서드를 갖는다. 메서드의 몸통 부분이 없는 미완성의 메서드이다. 메서드가 이와 같이 되어 있는 이유는 메서드의 내용이 상속받는 클래스에 따라 달라질 수 있기 때문에 추상 클래스에서는 선언부만 작성해 두는 것이다. 그리고 실제 내용은 상속받은 클래스에서 목적에 맞게 구현하도록 비워 두는 것이다.




추상클래스의 문법



1
2
3
4
5
abstract calss 클래스이름 
{
    abstract 리턴타입 메서드이름();
    // ...
}
cs


추상클래스의 문법은 위와 같다. 클래스 앞에 abstract 을 붙이고, 메서드 앞에도 abstract 을 붙인다. 메서드의 경우 리턴 타입과 메서드 이름만 정의해 둔다.



추상 클래스의 특징

  • 추상클래스는 new로 객체 생성이 불가능하다. 

  • 추상클래스를 사용하려면 꼭 상속을 받아야 된다.

  • 추상클래스를 상속받을 경우 추상메서드는 반드시 구현해주어야 한다. 만약 추상메서드 중 하나라도 구현하지 않는다면, 자손 클래스 역시 추상클래스로 지정해 주어야 한다.



  • 예제


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 추상클래스
abstract class Player 
    abstract void play(int pos);
    abstract void stop();
}
 
public class AudioPlayer extends Player
{
    public static void main(String args[]){
 
    }
    
    // 추상클래스의 메서드를 구현해야 한다.
    @Override
    void play(int pos) {
        /* 내용생략 ... */
    }
 
    @Override
    void stop() {
        /* 내용생략 ... */
    }
}
cs


RSS구독 링크추가 트위터 이메일 구독