추상 클래스
추상 클래스(Abstract Class)는 객체 지향 프로그래밍에서 사용되는 중요한 개념으로, 완전히 구현되지 않은 메소드를 가질 수 있는 클래스입니다. 추상 클래스는 직접적으로 객체를 생성할 수는 없지만, 이를 상속받은 하위 클래스에서 추상 메소드를 구현하여 사용할 수 있습니다. 추상 클래스는 클래스 간의 공통된 특성을 추출하여 정의하는 데 사용됩니다.
즉, 다시 말하면 객체를 생성할 수 있는 클래스를 실체 클래스라고 한다면, 이 클래스들의 공통적인 필드나 메소드를 추출해서 선언한 클래스를 추상 클래스라고 합니다!!!
abstract class Shape {
abstract double calculateArea(); // 추상 메소드, 하위 클래스에서 구현
void displayArea() {
System.out.println("Area: " + calculateArea());
}
}
class Circle extends Shape {
private double radius;
Circle(double radius) {
this.radius = radius;
}
@Override
double calculateArea() {
return Math.PI * radius * radius;
}
}
class Rectangle extends Shape {
private double width;
private double height;
Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
double calculateArea() {
return width * height;
}
}
public class AbstractClassExample {
public static void main(String[] args) {
Circle circle = new Circle(5.0);
Rectangle rectangle = new Rectangle(4.0, 6.0);
circle.displayArea();
rectangle.displayArea();
}
}
이 코드는 추상 클래스를 사용한 예시입니다. 여기서 중요한 것은 추상 메소드입니다.
추상 메소드는 자식 클래스들이 가지고 있는 공통 메소드를 뽑아내어 추상 클래스로 작성할 때, 메소드 선언부만 동일하고 실행 내용은 자식 클래스마다 달라야 하는 경우가 있습니다. 이 때 사용합니다. 위에 코드는 calculateArea()로 각 도형마다 계산 하는 법이 다르므로 추상 메소드로 선언했습니다.
봉인된 클래스
기본적으로 final 클래스를 제외한 모든 클래스는 부모 클래스가 될 수 있습니다. 그러나 java 15부터는 무분별한 자식 클래스 생성을 방지하기 위해 봉인된 클래스가 도입되었습니다.
public sealed class Person permits Employee, Manager { ... }
이렇게 하면 Person의 Employee와 Manager만 자식 객체 선언할 수 있습니다.
public final class Employee extends Person { ... }
public non-sealed class Member extends Person { ... }
final은 더 이상 상속할 수 없다는 뜻입니다. 그러므로 더 이상 자식 객체를 못 만듭니다.
non-sealed는 봉인을 해제한다는 뜻입니다. 그래서 Manager는 자식 클래스를 만들 수 있습니다!!
출처
이것이 자바다
https://product.kyobobook.co.kr/detail/S000061695652
'JAVA 공부' 카테고리의 다른 글
인터페이스에 대해(2) (1) | 2023.08.17 |
---|---|
인터페이스에 대해(1) (0) | 2023.08.16 |
상속에 대해(2) (0) | 2023.08.14 |
상속에 대해(1) (0) | 2023.08.13 |
메모리 사용 영역에 대해 (0) | 2023.08.08 |