logo

Java의 인터페이스 유형

Java 프로그래밍 영역에서 클래스 계약을 설정하고 코드 일관성을 보장하려면 Java 인터페이스가 필수적입니다. 이는 구현 클래스가 구현해야 하는 여러 메서드의 개요를 설명하여 클래스의 청사진 역할을 합니다. 개발자는 인터페이스를 사용하여 코드의 추상화, 모듈성 및 유지 관리 가능성을 모두 달성할 수 있습니다. 그만큼 Java의 다양한 인터페이스 유형 이 섹션에서 논의됩니다.

마커 인터페이스

태그 인터페이스라고도 불리는 마커 인터페이스는 메소드가 선언되지 않은 인터페이스입니다. 간단히 말하면 마커 역할을 하며 마커 인터페이스를 구현하는 클래스에 특정 속성이나 품질이 있음을 알립니다. Java 런타임 환경 및 기타 도구는 이러한 API를 사용하여 추가 기능이나 데이터를 제공합니다. 직렬화 가능, 복제 가능 및 원격은 Java의 마커 인터페이스의 일부 인스턴스입니다.

기능적 인터페이스

람다 표현식 및 함수형 프로그래밍 개선의 일환으로 함수형 인터페이스가 Java 8에 추가되었습니다. 정확하게 하나의 추상 메소드를 갖는 인터페이스를 함수형 인터페이스라고 합니다. 또한 기본 및 정적 메서드도 가능합니다. 람다 표현식 및 메소드 참조와 같은 많은 Java 함수형 프로그래밍 기능은 함수형 인터페이스를 사용합니다. 조건자(Predicate), 소비자(Consumer), 함수(Function) 및 공급자(Supplier)는 java.util.function 패키지에서 제공하는 내장 기능 인터페이스 중 일부입니다.

단일 추상 메소드(SAM) 인터페이스

Java 8 이전에는 SAM 인터페이스라는 특정 종류의 기능적 인터페이스가 있었습니다. 이러한 인터페이스에는 기본 또는 정적 메서드가 여러 개 있을 수 있지만 추상 메서드는 하나만 있을 수 있습니다. Runnable, Comparator 및 MouseListener는 SAM 인터페이스 예제가 포함된 몇 가지 Java 8 이전 API입니다. Java 8에 기능적 인터페이스가 도입되면서 SAM 인터페이스를 람다 표현식과 함께 사용할 수 있으며 기능적 인터페이스로 간주할 수 있습니다.

c 문자열 배열

일반 인터페이스

Java에서 가장 널리 사용되는 인터페이스는 일반 인터페이스입니다. 인터페이스를 구현하는 클래스가 구현해야 하는 하나 이상의 추상 메서드가 있습니다. Java 8부터 일반 인터페이스에는 기본 및 정적 메소드가 추가로 포함될 수 있습니다. 일반 인터페이스는 개발자가 클래스가 따라야 하는 규칙이나 요구 사항을 지정하는 데 사용됩니다. java.util 패키지에 있는 List, Set 및 Map은 모두 일반적인 Java 인터페이스의 예입니다.

다중 상속 인터페이스

리눅스 무료 ipconfig

Java는 클래스가 다중 인터페이스를 구현하는 것을 허용하지만 다중 클래스 상속을 지원하지 않습니다. 여러 계약을 동시에 정의하거나 동작을 상속하기 위해 클래스에서 구현하는 인터페이스를 다중 상속 인터페이스라고 합니다. 클래스는 여러 인터페이스를 구현하여 각 인터페이스에 설명된 기능을 제공할 수 있습니다. 이 기능의 도움으로 개발자는 코드를 재사용하고 아이디어의 적응성을 높일 수 있습니다.

다음은 해당 출력과 함께 Java의 각 인터페이스 유형에 대한 코드 예입니다.

마커 인터페이스

MarkerInterfaceExample.java

 import java.io.Serializable; // Marker Interface interface MyMarkerInterface extends Serializable { } public class MarkerInterfaceExample { public static void main(String[] args) { MyMarkerInterface obj = new MyMarkerInterface() { }; System.out.println(obj instanceof Serializable); // true } } 

산출:

 true 

기능적 인터페이스

FunctionalInterfaceExample.java

 import java.util.function.Predicate; public class FunctionalInterfaceExample { public static void main(String[] args) { Predicate isLengthGreaterThan5 = str -> str.length() > 5; System.out.println(isLengthGreaterThan5.test('Hello')); // false System.out.println(isLengthGreaterThan5.test('OpenAI')); // true } } 

산출:

 false true 

단일 추상 메소드(SAM) 인터페이스:

SAMInterfaceExample.java

 interface MySAMInterface { void performAction(); } public class SAMInterfaceExample { public static void main(String[] args) { MySAMInterface obj = () -> System.out.println('Performing action'); obj.performAction(); // Performing action } } 

산출:

Verilog 매개변수
 Performing action 

일반 인터페이스

NormalInterfaceExample.java

 import java.util.List; import java.util.ArrayList; interface MyInterface { void printMessage(); } class MyClass implements MyInterface { @Override public void printMessage() { System.out.println('Hello, World!'); } } public class NormalInterfaceExample { public static void main(String[] args) { MyInterface obj = new MyClass(); obj.printMessage(); // Hello, World! } } 

산출:

문자열 자바 비교
 Hello, World! 

다중 상속 인터페이스:

MultipleInheritanceInterfaceExample.java

 interface Interface1 { void method1(); } interface Interface2 { void method2(); } class MyClass implements Interface1, Interface2 { @Override public void method1() { System.out.println('Method 1'); } @Override public void method2() { System.out.println('Method 2'); } } public class MultipleInheritanceInterfaceExample { public static void main(String[] args) { MyClass obj = new MyClass(); obj.method1(); // Method 1 obj.method2(); // Method 2 } } 

산출:

 Method 1 Method 2 

이 예제는 Java의 다양한 인터페이스 유형의 사용법과 동작을 보여줍니다. 각 코드 조각을 개별적으로 실행하여 해당 출력을 관찰할 수 있습니다.

결론적으로 Java 인터페이스는 계약을 지정하고 코드 모듈성을 달성하기 위한 강력한 방법을 제공합니다. 인터페이스는 특정 특성을 나타내는 마커 인터페이스, 기능적 프로그래밍을 가능하게 하는 기능적 인터페이스, 계약을 정의하는 일반 인터페이스, 여러 계약을 결합하는 다중 상속 인터페이스 등 Java 개발에 필수적입니다. Java 개발자는 다양한 인터페이스 유형과 해당 기능을 알고 있을 때 명확하고 확장 가능한 코드를 더 잘 작성할 수 있습니다.