Java

[JAVA] 5. 일부 완성되어 있는 abstract 클래스

히비스 2021. 4. 29. 17:48

abstract클래스에 대해 결론부터 말하자면,

 

설계 -> 개발 프로세스 단계에서

설계 단계를 interface 선언.

개발 단계를 해당 class 및 Impl구현이라고 했을 때,

 

설계와 실제 개발 사이의 중간 단계를 위한 예약어라고 볼 수 있다.

인터페이스를 선언하다 보니, 어떤 메소드는 미리 만들어 놓아도 문제가 없지만

해당 클래스를 다 만들기엔 애매하다.

그래서, 아주 공통적인 기능을 미리 구현해 놓으면 많은 도움이 되기 때문에 abstract클래스를 만든다.

 

ex)

public interface MemberManager {

    public boolean addMember(MemberDTO member);

}

 

public class MemberManagerImpl implements MemberManager {

     // MemberManager는 interface임.

}

이렇게만 만들고 컴파일 하게 되면,

error : MemberManagerImpl is not abstract and does not override abstract method updateMember() in MemberManager

해석 -> MemberManagerImpl는 abstract클래스도 아니고 MemberManager에 있는 updateMembe()라는 abstract 메소드도 구현하지 않았다.

 

이런 컴파일 에러를 해결하기 위해선

MemberManagerImpl.java에 구현체를 만들어줘야 하지만...아직 개발이 시작되기 전에 메소드를 다 구현하기엔 조금 번거로울 수 있다.

 

따라서,

public abstract class MemberManagerAbstract {

    public abstract boolean addMember(MemberDTO member);

}

해당 abstract클래스를 만들어주고,

 

public class MemberManagerImpl extends MemberManagerAbstract {

     public boolean addMember(MemberDTO member) {

         return false;

    }

}

 

이렇게 상속받으면 미리 만들어놓은 (공통)기능을 바로 상속받아 사용할 수 있다!

 

 

 

 

 

 

*** 자바의 신(이상민 저)을 공부한 내용 중에 기억해야 할 개념들을 정리해 놓은 글 입니다.***