본문 바로가기

프로그래밍/JAVA

[JAVA] 추상클래스(Abstract Class)

자바의 정석과 오픈튜토리얼의 강좌를 통해 작성한 내용입니다.


0. 들어가기에 앞서


abstract : 상속해서 사용하도록 강제하는 것

위 코드는 다음과 같은 에러를 가진다.

abstract로 선언한 추상클래스 A는 반드시 상속을 해야 한다.


abstract class A{
public abstract int b(); // 추상메서드 (즉, 로직을 가질 수 없음) B클래스에서 b메서드 구현
public void d(){
System.out.println("business");
}
}

class B extends A {

public int b(){ // 추상클래스 A의 b메서드를 구체적으로 구현.
return 1;
}
}

class exercise
{
public static void main(String[] args){

// A name = new A();
B name = new B();

}
}

추상메서드가 하나라도 있으면, 그 메서드를 담는 클래스는 "추상클래스"여야 한다.


1. 추상클래스(abstract class)


추상클래스는 자손클래스에 의해서만 완성될 수 있다.


abstract class 클래스이름 { //  메서드 내용  //}


추상클래스로 지정되면 클래스의 인스턴스를 생성할 수 없다.



2. 추상메서드(abstract method)


추상메서드는 선언부만 작성하고 구현부는 작성하지 않은 것이 추상메서드이다.

이를 만드는 이유는 메서드의 내용이 상속받는 클래스에 따라 달라질 수 있기 때문이다.


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) { 해당 내용 } // 추상 메서드 "구현"
}


3. 추상클래스의 작성


상속이 (자손 클래스)를 만드는데 (조상 클래스)를 이용하는 거라면

추상화는 기존 클래스들의 공통분모를 추출해 (조상 클래스)를 만드는 것이다.