230224 JAVA_추상화_인터페이스

Myung A Lee·2023년 2월 24일
0

JAVA

목록 보기
5/13
post-thumbnail

Java

추상화(Abstract)

추상화는 객체지향프로그래밍의 4대 특징 중 실체간에 공통되는 특성을 추출하고 불필요한 정보를 제거해 단순화 시키는 것이다. 예시로는 지도와 약도를 들 수 있다.

추상 클래스 (Abstract Class)

  • 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 메서드의 규격을 만드는데 사용되는 클래스.
  • abstract 키워드를 사용해서 추상클래스임을 밝혀 줘야 한다.
  • 추상클래스 = 일반 메서드 + 추상메서드
  • 추상 클래스는 자식 외에는 누구도 객체화 시킬 수 없다.
  • HttpServlet은 통신 규격을 잡기 위한 클래스

추상 메서드 (Abstract Method)

  • 선언부만 있고 구현부가 없는 메서드
  • 선언시 추상 클래스와 마찬가지로 abstract 키워드를 사용해야 한다.
  • 추상 클래스 상속시 강제 Override 되기 때문에 꼭 필요한 기능을 구현하도록 할 때 유용하다.

인터페이스 (Interface)

사용방법 즉 규격을 의미하는 것으로 실제로는 구현 된 것이 없는 기본 설계도, 껍데기 같은 것으로 공통 작업시 규격을 잡아주는 역할

  • 인터페이스는 객체화 되지 않는다.
  • 가질 수 있는 멤버는 추상메서드 밖에 없다. (jdk 1.7까지 ) 그렇지만 abstract 키워드 생략

인터페이스 다중 구현 (Interface Multiple implements)

Java에서는 클래스의 경우 기본적으로 분류에 해당하여 다중 상속을 지원하지 않지만 인터페이스의 경우 규격이므로 다중 구현을 지원한다.

  public class className implements interfaceName, interfaceName2 { 
  
  }

익명객체 (Anonymous Instance)

익명 객체는 말 그대로 이름이 없는 객체이다. 인테페이스는 클래스 없이 스스로 객체화 할 수 없다. 그러나 익명객체를 사용하면 임시로 객체화가 가능하다. 이는 임시로 이름이 없는 클래스를 만들어 객체화한 후 사라져 버리기 때문이다. 우리는 이 객체를 익명객체라고 부른다.

추상클래스 vs 인터페이스
추상화 클래스는 클래스를 상속 받아 기능을 이용하고 확장시키는 것
인터페이스는 규격을 만들어 구현에 강제하기 위함

추상화와 인터페이스의 장점

  • 인터페이스와 추상화는 개발시 전체적인 규격을 만들어 준다.
    이를 활용하면 모듈간의 결합도를 감소시킬 수 있다.

    결합도 : 서로 다른 모듈간의 의존하는 정도, 즉 결합도가 높으면 수정시 손상도가 높다 ex) 결합도가 높은 예시 : 신체
    응집도 : 한 모듈 내부의 처리 요소들이 서로 관련되어 있는 정도

  • 공통되는 기능을 상속받으므로써 코드의 중복을 줄여 유지보수에 용이하다.

0개의 댓글