[TIL] 3일차 추상 클래스

김지수·2024년 4월 23일

TIL

목록 보기
3/53

추상 클래스란?

나 이상의 추상 메서드를 포함하고 있는 클래스이다.
추상 메서드는 메서드의 시그니처(이름, 매개변수 및 반환 유형)만을 정의하고 실제 구현은 하위 클래스에서 제공해야 한다.
추상 클래스는 직접 인스턴스화할 수 없으며, 추상 메서드를 구현하지 않은 경우를 대비하여 하위 클래스에서 추상 메서드를 반드시 구현해야 한다.
추상 클래스는 일반 메서드를 포함할 수도 있다.
추상 클래스는 클래스 간의 계층 구조를 구축하는 데 유용하며, 다형성을 구현하는 데에도 활용될 수 있다.

추상 클래스의 장점과 단점

장점
1. 코드 재사용성 : 추상 클래스는 공통된 기능을 가진 클래스들의 공통적인 부분을 추상화하여 재사용할 수 있다. 이를 통해 코드의 중복을 피하고 유지보수성을 향상시킨다.
2. 다형성 구현 : 추상 클래스를 사용하면 다형성을 구현할 수 있다. 즉, 하위 클래스들이 동일한 부모 클래스를 상속하고 있으면, 부모 클래스 타입으로 하위 클래스 객체를 다룰 수 있다.
3. 구현 강제 : 추상 클래스는 추상 메서드를 포함할 수 있으며, 이를 통해 하위 클래스에서 특정 메서드의 구현을 강제할 수 있다.
단점
1. 단일 상속만 가능 : 자바는 단일 상속을 지원하기 때문에 하나의 추상 클래스만을 상속할 수 있다. 이로 인해 클래스들 간의 상속 구조가 복잡해질 수 있다.
2. 제한된 유연성 : 추상 클래스는 이미 하나의 클래스를 상속하고 있기 때문에 다른 클래스를 상속할 수 없다. 이는 클래스의 유연성을 제한할 수 있다.
3. 설계의 복잡성 : 추상 클래스를 올바르게 설계하려면 클래스 간의 계층 구조를 잘 이해하고 설계해야 한다. 잘못된 설계는 코드를 복잡하게 만들고 유지보수를 어렵게 할 수 있다.


추상 메서드 구현

public abstract class AbstractOperation {
    public abstract double operate(int firstNumber, int secondNumber);
}
public class AddOperation extends AbstractOperation{
    @Override
    public double operate(int firstNumber, int secondNumber){
        return firstNumber + secondNumber;
    }
}

extends 로 상속하고 추상메서드 구현을 오버라이딩해서 무조건 구현해야 한다.


오늘의 회고

추상 메서드 구현해서 하는게 아직 뭔가 복잡하고 이해가 되면서 안되는 것 같다.
다음에는 인터페이스를 구현해보면서 차이점을 찾아 보고 공부해봐야겠다.

profile
서툴고 부족한 점이 많지만, 배우고 발전하며 성장하기 위해 노력하겠습니다.

0개의 댓글