JAVA/포스팅

자바 추상클래스

짜집퍼박사(짜박) 2023. 11. 12. 21:10

자바에서 추상 클래스는 하나 이상의 추상 메서드를 포함할 수 있는 클래스입니다. 추상 메서드는 선언만 되어 있고 구현은 없는 메서드입니다. 추상 클래스는 일반 메서드뿐만 아니라 추상 메서드도 포함할 수 있습니다. 추상 클래스는 객체를 직접 생성할 수 없으며, 상속을 통해 하위 클래스에서 추상 메서드를 구현하도록 유도하는 역할을 합니다.

추상 클래스를 선언하기 위해서는 abstract 키워드를 사용합니다. 추상 메서드 역시 abstract 키워드를 사용하여 선언합니다. 하위 클래스에서는 추상 메서드를 반드시 구현해야 합니다.

다음은 간단한 추상 클래스와 그것을 상속받은 하위 클래스의 예시입니다.

// 추상 클래스
abstract class Shape {
    // 일반 메서드
    void display() {
        System.out.println("This is a shape.");
    }

    // 추상 메서드
    abstract double area();
}

// 추상 클래스를 상속받는 하위 클래스
class Circle extends Shape {
    double radius;

    Circle(double radius) {
        this.radius = radius;
    }

    // 추상 메서드를 구현
    double area() {
        return Math.PI * radius * radius;
    }
}

// 추상 클래스를 상속받는 또 다른 하위 클래스
class Rectangle extends Shape {
    double length;
    double width;

    Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }

    // 추상 메서드를 구현
    double area() {
        return length * width;
    }
}

public class Main {
    public static void main(String[] args) {
        // 추상 클래스의 인스턴스를 생성할 수 없음
        // Shape shape = new Shape(); // 오류 발생

        // 추상 클래스를 상속받은 하위 클래스의 인스턴스 생성
        Circle circle = new Circle(5);
        Rectangle rectangle = new Rectangle(4, 6);

        // 일반 메서드 호출
        circle.display(); // This is a shape.
        rectangle.display(); // This is a shape.

        // 추상 메서드 호출
        System.out.println("Circle area: " + circle.area()); // Circle area: 78.53981633974483
        System.out.println("Rectangle area: " + rectangle.area()); // Rectangle area: 24.0
    }
}

추상 클래스를 사용하면 공통된 특성을 가진 클래스들을 논리적으로 묶어 상속 관계를 통해 설계할 수 있습니다. 이를 통해 코드의 재사용성과 유지보수성이 향상되며, 다형성을 활용하여 구현 클래스를 교체하기 쉬워집니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 인터페이스  (0) 2023.11.13
자바 추상클래스의 작성  (0) 2023.11.12
자바 매개변수의 다형성  (0) 2023.11.12
자바 참조변수와 인스턴스의 연결  (0) 2023.11.12
자바 업캐스팅(Upcasting)  (0) 2023.11.12