Java

[인프런] 인터페이스

sejin2 2024. 5. 28. 13:29

인터페이스

자바는 앞서 공부한 순수 추상 클래스를 더 편리하게 사용할 수 있는 인터페이스라는 기능을 제공한다.
인터페이스는 class가 아니라 interface라는 키워드를 사용하면 된다.

  • 인터페이스의 메서드는 모두 public, abstract이다.
  • 메서드에 public abstract를 생략할 수 있으며, 생략이 권장된다.
  • 인터페이스는 다중 구현( 다중 상속 )을 지원한다.

인터페이스와 멤버 변수

인터페이스에서 멤버 변수는 public, static, final이 모두 포함되어 있다고 간주된다.

클래스, 추상 클래스, 인터페이스는 프로그램 코드, 메모리 구조상 모두 똑같다. 모두 자바에서는 .class로 다루어지고 인터페이스를 작성할 때도 .java에 인터페이스를 정의한다.
인터페이스는 순수 추상 클래스와 비슷하다고 생각하면 된다.

상속과 구현

부모 클래스의 기능을 자식 클래스가 상속 받을 때, 클래스는 상속 받는다고 표현하지만 부모의 인터페이스의 기능을 자식이 상속 받을 때는 인터페이스를 구현한다고 한다.
상속은 이름 그대로 부모의 기능을 물려받는 것이 목적이고, 인터페이스는 모든 메서드가 추상 메서드이기 때문에 물려받을 수 있는 기능이 없고 인터페이스의 모든 메서드를 자식이 오버라이딩 해서 기능을 구현해야 한다. 그러므로 구현한다고 말한다. 

인터페이스를 사용해야 하는 이유😸

  1. 제약 : 인터페이스를 만드는 이유는 인터페이스를 구현하는 곳에서 인터페이스의 메서드를 반드시 구현하라는 제약을 주는 것이다. 인터페이스의 제약은 반드시 구현해야 하는 것이다. 순수 추상 클래스는 추상 메서드 뿐 만 아니라 구현이 가능한 메서드를 끼워 넣을 수 있는 문제점이 있는데 ( 일부는 구현x, 일부는 구현o ), 인터페이스는 이를 방지할 수 있다. 
  2. 다중 구현 : 자바에서 클래스 상속은 부모를 하나만 지정할 수 있는 반면 인터페이스는 부모를 여러 명 두는 다중 구현이 가능하다. 

인터페이스 - 다중 구현

자바는 다중 상속을 지원하지 않기 때문에 extends의 대상은 하나만 선택할 수 있다. 부모가 또 다른 부모를 가지는 것은 가능하다. 
인터페이스는 모두 추상 메서드로 이루어져 있기 때문에 (기능이 없음 ! ) 다중 구현이 가능하다. 

 

 

 

공부 내용: [인프런] 김영한의 실전 자바 - 기본편

'Java' 카테고리의 다른 글

[인프런] java.lang 패키지  (0) 2024.06.02
[인프런] 객체 지향  (0) 2024.05.28
[인프런] 추상 클래스  (0) 2024.05.28
[인프런] 다형성과 메서드 오버라이딩  (0) 2024.05.28
instanceof  (0) 2024.05.27