Java

Interface, Default, Static, Polymorphism(다형성)

sounglikane 2024. 9. 9. 18:03

Interface(인터페이스)

Interface는 클래스와 유사한 참조 타입으로, 상수, 메서드 시그니처, 기본 메서드, 정적 메서드, 중첩 타입만을 포함할 수 있습니다. 인터페이스는 인스턴스 필드나 생성자를 포함할 수 없습니다. 인터페이스 내의 메서드는 기본적으로 추상적이며, 메서드의 본문을 가지지 않습니다(기본 메서드와 정적 메서드는 제외).

 

Interface 의 주요 특징:

  1. 추상 메서드: 인터페이스 내의 모든 메서드는 암묵적으로 public과 abstract로 선언되며, 기본 메서드와 정적 메서드는 예외입니다.
  2. 다중 상속: 클래스는 여러 인터페이스를 구현할 수 있어 Java에서 다중 상속을 지원합니다.
  3. 기본 메서드: Java 8부터 인터페이스는 메서드 구현을 제공하는 기본 메서드를 가질 수 있습니다.
  4. 정적 메서드: 인터페이스는 정적 메서드를 포함할 수도 있으며, 이는 인터페이스 자체에서 호출해야 합니다.
  5. 상수: 인터페이스에 선언된 필드는 암묵적으로 public, static, final이 되어 상수로 취급됩니다.

 

Interface를 사용하는 이유:

  • 추상화: 인터페이스는 해당 인터페이스를 사용하는 클래스가 반드시 구현해야 하는 메서드를 정의하여 추상화의 한 층을 제공합니다.
  • 다중 상속: Java에서는 클래스의 다중 상속을 지원하지 않지만, 인터페이스를 통해 다중 상속과 유사한 기능을 구현할 수 있습니다.
  • 느슨한 결합: 인터페이스는 클래스 간의 의존성을 줄여 유연하고 유지보수가 용이한 코드를 작성하는 데 도움을 줍니다.

 

Default, Static, Polymorphism(다형성)

 

  • Default Method는 인터페이스에 기본 구현을 제공하며, 이는 선택적으로 오버라이드할 수 있습니다.
  • Static Method는 인터페이스나 클래스 이름을 통해 호출되며, 인스턴스와는 독립적으로 동작합니다.
  • 다형성(Polymorphism)은 같은 인터페이스나 상위 클래스 타입으로 다양한 객체를 처리할 수 있는 능력을 말하며, 코드의 유연성과 확장성을 높이는 데 기여합니다.

Default

 

  • default 메서드는 인터페이스에 추가할 수 있으며, 이를 구현하는 모든 클래스에서 사용할 수 있습니다.
  • 인터페이스를 확장하거나 구현하는 모든 기존 클래스는 이 메서드를 그대로 사용하거나 재정의할 수 있습니다.
  • 다중 상속 시 두 개의 인터페이스가 동일한 시그니처의 default 메서드를 제공하는 경우, 클래스는 이를 명시적으로 재정의해야 합니다.

 

 

Static

 

  • static 메서드는 인터페이스나 클래스를 통해 직접 호출할 수 있으며, 인터페이스를 구현한 클래스에서도 재정의할 수 없습니다.
  • static 메서드는 주로 유틸리티 메서드나 헬퍼 메서드를 제공하는 데 사용됩니다.

Polymorphism (다형성)

동일한 인터페이스나 상위 클래스 타입으로 다양한 객체를 다룰 수 있는 능력을 말합니다.

 

사용 경우:

 

  • 오버로딩 (Method Overloading): 동일한 이름의 메서드가 서로 다른 매개변수 목록을 가질 때.
  • 오버라이딩 (Method Overriding): 서브 클래스가 슈퍼 클래스의 메서드를 재정의할 때.
  • 인터페이스를 통한 다형성: 하나의 인터페이스 타입이 여러 구현 클래스를 참조할 수 있을 때.

 

 

 

 

 

 

'Java' 카테고리의 다른 글

Java Collection Interface  (0) 2024.09.12
Java Error & Exception  (0) 2024.09.09
Java (접근 제어자, 상속의 개념)  (0) 2024.09.05
Java Class  (0) 2024.09.04
Java 변수(Variable)  (0) 2024.09.03