추상 클래스
- 일부 메서드의 구현이 누락된 클래스
- 다른 클래스에서 이를 상속받아 완전한 클래스로 만들어 사용
- 객체를 직접적으로 생성 x
- 단순히 다른 클래스들이 해당 추상클래스를 상속받아 구현할 수 있도록 하는 역할
문법
// 추상 클래스의 선언 abstract class MyAbstractClass { // 추상 메서드 선언 abstract void abstractMethod();
// 일반 메서드
void regularMethod() {
// 메서드 구현
}
}
> 구조
- 일반 크래스와 유사하나 적어도 하나 이상의 추상 메서드 포함해야함
> 쓰이는 상황
- 객체의 동작을 정의하는데 있어서 일부 메서드가 완전하지 않고 구현이 필요한 경우
- 다수의 서브 클래스가 공통적인 특성이 있을 때 사용
> 주의할 점
- 서브 클래스에서 반드시 추상 메서드 구현
- 상속을 통해 확장해야함
> 특징
- 하나 이상의 추상 메서드 포함
- 일반 메서드와 멤버 변수 포함 가능
- 상속받아 완전한 클래스로 확장하여 사용
> 기능
- 공통된 특징을 추상화하여 코드의 재사용성 높임
- 강제로 서브 클래스에서 해당 메서드를 구현하도록 유도
```java
// 추상 클래스의 정의
abstract class Shape {
String name;
// 추상 메서드
abstract void draw();
// 일반 메서드
void display() {
System.out.println("도형: " + name);
}
}
// 추상 클래스를 상속받는 구체적인 클래스
class Circle extends Shape {
Circle() {
this.name = "원";
}
// 추상 메서드의 구현
void draw() {
System.out.println("원을 그립니다.");
}
}
// 메인 클래스
public class Main {
public static void main(String[] args) {
// 추상 클래스를 인스턴스화할 수 없으므로 구체적인 클래스를 이용하여 객체 생성
Circle circle = new Circle();
circle.display();
circle.draw();
}
}