추상클래스에 대해 공부한지 어느덧 1년이 지나간 것 같다.
부캠하는중 조원의 추상클래스와 인터페이스의 차이에대한 질문에 대한 암기에 비롯된 대답을 내놓았지, 알기 쉽게 설명하지 못했고, 질문하신 바에 명확한 대답을 하지 못했다.
이에 나는 복습할겸 예전에 공부했던 것을 바탕으로 기억을 되짚어 보려 한다.
추상 클래스
왜 쓰는 것일까 ?
-> 상속받은 자식 클래스에서 해당 메서드를 용도에 맞게끔 오버라이딩하여 사용하기 위해서다.
즉, 추상 클래스는 부모가 된다.
이는 구체적인 내용은 작성하지 않고, 공통적인 특징을 추상적으로 선언만 해둠을 의미한다.
-> 강제성을 부여, 리턴 값이 없다는 것이다.
-> 추상 클래스에서 선언만 해놓음으로써 자식 클래스들이 이를 상속 받아 구현하므로 새로운 클래스를 작성할 때, 하나의 틀이 된다.
사실, 필드나 생성자, 메서드(일반)도 포함할 수 있다. 그래서 되게 모호한 느낌이 들지만 위에 말한 것을 명심하는 것이 좋다.
그럼 굳이 왜 추상 클래스를 써야 하는 것일까?
분업화된 시스템에서 공통의 프로젝트를 진행할 때, 많이 사용되어지는 문법.
코드의 확장과 효율적인 분업.
인터페이스와의 차이점은 ?
사실 이 것 때문에 여기까지 읽었을 것이라고 생각한다.
-> 인터페이스에서는 메서드나 멤버 필드(변수)를 가질 수 없다. (추상 클래스는 가질 수 있음). 즉, 추상 메서드만 가질 수 있다.
인터페이스를 쉽게 생각하면, 그냥 'class'다. 부를때만 인터페이스라고 부르면 된다.
인터페이스 - 다중 상속 (1:N)
인터페이스를 이용하면 메서드의 추상적인 "선언"과 그 메서드들을 구체적인 "구현"부분을 분리시킬 수 있다 --> 매우 큰 장점.
예) class Student extends Person implements A,B ( Person 먼저 상속받고 A,B상속)