추상화는 객체지향프로그래밍의 4대 특징 중 실체간에 공통되는 특성을 추출하고 불필요한 정보를 제거해 단순화 시키는 것이다. 예시로는 지도와 약도를 들 수 있다.
사용방법 즉 규격을 의미하는 것으로 실제로는 구현 된 것이 없는 기본 설계도, 껍데기 같은 것으로 공통 작업시 규격을 잡아주는 역할
Java에서는 클래스의 경우 기본적으로 분류에 해당하여 다중 상속을 지원하지 않지만 인터페이스의 경우 규격이므로 다중 구현을 지원한다.
public class className implements interfaceName, interfaceName2 {
}
익명 객체는 말 그대로 이름이 없는 객체이다. 인테페이스는 클래스 없이 스스로 객체화 할 수 없다. 그러나 익명객체를 사용하면 임시로 객체화가 가능하다. 이는 임시로 이름이 없는 클래스를 만들어 객체화한 후 사라져 버리기 때문이다. 우리는 이 객체를 익명객체라고 부른다.
추상클래스 vs 인터페이스
추상화 클래스는 클래스를 상속 받아 기능을 이용하고 확장시키는 것
인터페이스는 규격을 만들어 구현에 강제하기 위함
인터페이스와 추상화는 개발시 전체적인 규격을 만들어 준다.
이를 활용하면 모듈간의 결합도를 감소시킬 수 있다.
결합도 : 서로 다른 모듈간의 의존하는 정도, 즉 결합도가 높으면 수정시 손상도가 높다 ex) 결합도가 높은 예시 : 신체
응집도 : 한 모듈 내부의 처리 요소들이 서로 관련되어 있는 정도
공통되는 기능을 상속받으므로써 코드의 중복을 줄여 유지보수에 용이하다.