추상 클래스는 상속될 것을 전제로 하여 만들어진 클래스입니다. 추상 클래스에서는 구현하지 않은 추상 메서드를 정의할 수 있는데 상속한 클래스는 반드시 이 메서드들을 정의해야 합니다. 공통적인 기능이나 API를 설계할 때 자주 사용됩니다.
추상 클래스 만들기
// 추상 메서드를 가지는 클래스는 추상 클래스가 됨
public abstract class AbstractClass {
// 일반 메서드
public void printString(String str) {
System.out.println(str);
}
// 추상 메서드
public abstract String returnString(String str);
}
먼저 추상 클래스는 abstract 키워드를 붙입니다. 그리고 추상 클래스 안에는 일반 메서드와 추상 메서드를 정의할 수 있습니다. 추상 메서드를 정의하는 경우에는 인터페이스처럼 정의만 해주고 구현 부분은 만들지 않습니다.
추상 클래스 만들기
public class A extends AbstractClass {
// 반드시 구현해야 함
@Override
public returnString(String str) {
// 출력하고 반환
printString(str);
return str;
}
}
public class B extends AbstractClass {
// 반드시 구현해야 함
@Override
public returnString(String str) {
// 반환만 실행
return str;
}
}
추상 메서드의 구현은 추상 클래스를 상속받은 클래스에서 구현합니다. 하나의 추상 클래스를 상속하는 클래스는 여러 개를 만들 수 있으며 추상 메서드의 기능을 각각 다르게 구현할 수 있습니다.
실행
A a = new A();
B b = new B();
a.returnString("string"); // 결과: "string"
b.returnString("string"); // "string" 반환
상속받은 A, B 객체를 만들어 각각 returnString을 호출하고 있는 모습입니다. 구현을 다르게 했기 때문에 다른 기능이 실행되고 있음을 확인할 수 있습니다.
[JAVA] 자바 프로그램 실행 원리와 특징 (0) | 2020.09.26 |
---|---|
[JAVA] 연산자의 정의와 종류 (0) | 2020.09.26 |
[JAVA] 변수의 정의와 종류 (0) | 2020.09.26 |
[JAVA] 자바 메서드의 정의와 사용 (0) | 2020.09.26 |
[JAVA] static 과 non static 의 차이 (0) | 2020.09.26 |