좌충우돌 개발공부

TIL(20240509) JAVA : 인터페이스


✨내가 생각해봐야 할 것들

1) 자바에서 왜 인터페이스가 있는가?

- 예를 들어.. 어떤 의류회사에서 양면으로 입을 수 있는 점퍼를 하나 출시했다고 가정하자.. 그러면 양면 점퍼A 설명서에는 한 면으로 입기위해서는 어떻게 입어야 하는지 써놓고, 다른 한 면으로 입기 위해서는 어떻게 입어야 하는지 써놓았다면 사람들이 그 옷을 사서 잘 입을 수 있을 것이다. 그리고 그 옷이 히트를 쳐서 의류회사에는 다른 양면 점퍼B를 또 출시하게 되면 양면 점퍼A 설명서를 가지고 옷을 제작할 수 있게 되고 또 사람들도 그 설명서대로 옷을 예쁘게 잘 활용하여 입을 수 있을 것이다. 한 개의 설명서를 만들어 두면 입는방법이 같은 점퍼A,B를 출시할 때 똑같은 설명서를 2개 만들 필요가 없게 된다.

즉! 인터페이스는 코드의 재사용성과 중복제거, 유지보수성을 위해 인터페이스 기술이 자바에 필요한 것이 아닐까 생각한다.

- <그런데 추상메서드를 가지는건 추상클래스와 같은데, 뭐가 다른거지?>

- 추상클래스는 다중 상속을 허용하지 않는다. 하지만 인터페이스는 다중 상속이 가능하다!!

2) 인터페이스는 어떤 경우에 사용되는가?

- 해당 인터페이스를 구현한 객체들에 대해서 동일한 사용방법과 동작을 보장하기 위해 사용한다!


💡 인터페이스

  • 사용키워드 : interface
  • 필드 : public static final 명시할 필요는 없으며 초기화 필수!!(생성자가 없기때문에)
  • 메소드 : public abstract 명시할 필요는 없으며 메소드는 적용 클래스에 반드시 구현해야함
  • 상속 키워드 : implements generate -> implement 이용
  • 다중 상속 가능 여부 : 가능(클래스에서 다중 구현, 인터페이스끼리 다중 상속)
  • 추상클래스와의 공통점 :
    1. 추상메소드를 가지고 있어야 한다.
    2. 인스턴스화 할 수 없다. (new 생성자 사용 X)
    3. 인터페이스 혹은 추상 클래스를 상속받아 구현한 구현체의 인스턴스를 사용해야 한다.
    4. 인터페이스와 추상 클래스를 구현, 상속한 클래스는 추상 메소드를 반드시 구현해야 한다.
  • 자바 8버전에 추가된 기능들 : 클래스 메소드, default 구상메소드