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;
}
}
이렇게 상속받으면 미리 만들어놓은 (공통)기능을 바로 상속받아 사용할 수 있다!
*** 자바의 신(이상민 저)을 공부한 내용 중에 기억해야 할 개념들을 정리해 놓은 글 입니다.***
'Java' 카테고리의 다른 글
[JAVA] 7. 자주 쓰는 어노테이션(@) 종류 (0) | 2021.04.29 |
---|---|
[JAVA] 6. StringBuffer vs StringBuilder (0) | 2021.04.29 |
[JAVA] 4. Static의 쓰임새와 Static 블록 (0) | 2021.04.29 |
[JAVA] 3. 오버로딩(overloading) vs 오버라이딩(overriding) (0) | 2021.04.29 |
[JAVA] 2. 자바의 변수 종류는 총 4가지 (0) | 2021.04.29 |