n. 추상 클래스와 인터페이스의 차이를 설명하시오.
인터페이스는 구현부와 상태를 갖지 않은 채로 규격만 정해져있는 구현체이고,
추상 클래스는 필수 기능과 상태만 구현되어 있는 채로 아직 미완성의 추상화 객체이다.
그러나 추상 클래스와 인터페이스는 추상 메소드를 갖는다는 공통점 때문에 언뜻 보면 비슷해 보이지만, 개인적으로 이 둘의 성격이 완전히 다르다고 생각한다.
인터페이스는 말 그대로 구현체가 정의해야 할 메소드만 명시해 놓은 "규격"으로써, 인터페이스를 구현한 클래스의 타입이라 할 수 있다.
반면에 추상 클래스는 단일 상속만이 가능하며 이미 상태와 기능을 갖고 태어난 놈이기에 클래스 타입이라고 할 수는 없고, 아직 미완성의 추상화된 부모 클래스라고 할 수 있다.
Java8 이후 부터 인터페이스에서도 default method 를 구현할 수 있게 됨으로써 추상 클래스와의 차이가 애매모호해지기는 했지만 이는 단순히 인터페이스의 불편한점(?) 혹은 자율성(?)을 부여해 준 것이라 생각하고, 위의 방식대로 각각의 목적성을 위해 사용한다면 충분히 잘 구분하여 사용할 수 있다고 생각한다.
'2. Computer Science > 언어' 카테고리의 다른 글
OOP 5대 원칙과 4가지 특징 (0) | 2022.07.10 |
---|
댓글