추상화(abstract)란?
- "기능은 구현되어 있지 않고, 선언만 있다"라는 의미를 나타내는 지정자이다.
추상 메소드 (Abstract Method)
- 자식 클래스에서 반드시 오버라이딩 해야하는 메소드를 말한다.
- 실행문 블록({})이 없는 메서드이며, 추상 클래스 내에서 사용할 수 있다.
public abstract class Calculator {
public int add(int num1, int num2) { return num1 + num2; } // 덧셈
public int sub(int num1, int num2) { return num1 - num2; } // 뺄셈
public int mul(int num1, int num2) { return num1 * num2; } // 곱셈
public double div(double num1, double num2) { return num1/num2; } // 나눗셈
// 출력문 추상 메소드
public abstract void print();
}
추상 클래스 (Abstract Class)
- abstract 지정자로 지정된 클래스를 의미한다.
- 추상 클래스로 지정되면 더 이상 new 연산자를 이용하여 인스턴스 생성이 불가능하다.
- 하나 이상의 추상 메소드가 있으면 해당 클래스는 반드시 추상 클래스로 선언해야 한다.
- 부모 클래스가 추상 클래스로 선언되므로, 추상 클래스 타입은 업캐스팅으로 자주 사용된다.
- 자식 클래스에서 구현해야 할 기능을 부모 클래스의 추상 메소드 형식을 빌려와서 일관성 있게 구현할 수 있다.
- 프로그램 소스 코드 구조를 일정하게 유지할 수 있으므로 표준화가 가능하다.
public abstract class Calculator {
...
// 출력문 추상 메소드
public abstract void print();
}
예제
// 추상 클래스 Person
abstract class Person {
abstract void printInfo();
}
// 추상 클래스 Person을 상속한 Student
class Student extends Person {
public void printInfo() {
System.out.println("Student.printInfo");
}
}
public class Main {
public static void main(String[] args) {
// 추상 클래스의 사용
Student student = new Student();
student.printInfo(); // Student.printInfo
// 추상 클래스의 추상 메소드를 오버라이딩
Person person = new Person() {
@Override
void printInfo() {
System.out.println("Main.printInfo");
}
};
person.printInfo(); // Main.printInfo
}
}
⊙ 참고 문헌
- 이병승, 「초보 개발자를 위한 자바:한 권으로 배우는 자바 마스터 가이드 북」, 영진닷컴, 2024, p459 - 477
- 마종현, 「제로베이스 백엔드 취업 파트타임 스쿨 5기:Part 01. Java 기초-Chapter 01. Java 프로그래밍-10.추상 클래」, 제로베이스, 2024, https://zero-base.co.kr/