안 Java의 인터페이스 프로그래밍 언어는 클래스의 동작을 지정하는 데 사용되는 추상 유형으로 정의됩니다. Java의 인터페이스는 동작의 청사진입니다. Java 인터페이스에는 정적 상수와 추상 메소드가 포함되어 있습니다.
Java의 인터페이스란 무엇입니까?
Java의 인터페이스는 ㅏ 달성하는 메커니즘 추출 . Java 인터페이스에는 메소드 본문이 아닌 추상 메소드만 있을 수 있습니다. 추상화를 달성하는 데 사용됩니다. 인터페이스를 사용하는 Java의 다중 상속 . 즉, 인터페이스는 추상 메서드와 변수를 가질 수 있다고 말할 수 있습니다. 메소드 본문을 가질 수 없습니다. 자바 인터페이스 또한 IS-A 관계를 나타냅니다. .
속성이 아닌 동작에 따라 엔터티 유형을 결정할 때 이를 인터페이스로 정의해야 합니다.
Java 인터페이스 구문
interface { // declare constant fields // declare methods that abstract // by default. }>인터페이스를 선언하려면 인터페이스 키워드를 사용하십시오. 전체 추상화를 제공하는 데 사용됩니다. 이는 인터페이스의 모든 메소드가 빈 본문으로 선언되고 공개이며 모든 필드가 기본적으로 공개, 정적 및 최종임을 의미합니다. 인터페이스를 구현하는 클래스는 인터페이스에 선언된 모든 메서드를 구현해야 합니다. 인터페이스를 구현하려면 Implements 키워드를 사용합니다.
Java에서 인터페이스 사용
Java에서 인터페이스의 사용은 다음과 같습니다.
- 전체 추상화를 달성하는 데 사용됩니다.
- Java에서는 클래스의 경우 다중 상속을 지원하지 않기 때문에 인터페이스를 사용하면 다중 상속이 가능합니다.
- 모든 클래스는 1개의 클래스만 확장할 수 있지만 모든 클래스는 무한한 수의 인터페이스를 구현할 수 있습니다.
- 또한 느슨한 결합을 달성하는 데에도 사용됩니다.
- 인터페이스는 추상화를 구현하는 데 사용됩니다.
그렇다면 추상 클래스가 있을 때 인터페이스를 사용하는 이유에 대한 질문이 생깁니다.
고빈다 배우
그 이유는 추상 클래스에는 최종이 아닌 변수가 포함될 수 있지만 인터페이스의 변수는 최종, 공개 및 정적 변수이기 때문입니다.
// A simple interface interface Player { final int id = 10; int move(); }>클래스와 인터페이스의 관계
클래스는 인터페이스가 다른 인터페이스를 확장할 수 있는 것과 유사하게 다른 클래스를 확장할 수 있습니다. 그러나 클래스만 다른 인터페이스로 확장할 수 있으며 그 반대의 경우는 허용되지 않습니다.
클래스와 인터페이스의 차이점
클래스와 인터페이스는 동일해 보이지만 클래스와 인터페이스에는 일정한 차이가 있습니다. 클래스와 인터페이스의 주요 차이점은 다음과 같습니다.
수업 | 상호 작용 |
|---|---|
| 클래스에서는 변수를 인스턴스화하고 객체를 생성할 수 있습니다. | 인터페이스에서는 변수를 인스턴스화하거나 객체를 생성할 수 없습니다. |
| 클래스에는 구체적인(구현 포함) 메서드가 포함될 수 있습니다. | 인터페이스에는 구체적인(구현 포함) 메서드가 포함될 수 없습니다. |
| 클래스와 함께 사용되는 액세스 지정자는 private, protected 및 public입니다. | 인터페이스에서는 하나의 지정자(Public)만 사용됩니다. |
자바구현: 인터페이스를 구현하기 위해 키워드를 사용합니다. 구현하다
// Java program to demonstrate working of // interface import java.io.*; // A simple interface interface In1 { // public, static and final final int a = 10; // public and abstract void display(); } // A class that implements the interface. class TestClass implements In1 { // Implementing the capabilities of // interface. public void display(){ System.out.println('Geek'); } // Driver Code public static void main(String[] args) { TestClass t = new TestClass(); t.display(); System.out.println(t.a); } }> 산출
Geek 10>
Java 인터페이스 예
공통 기능을 가지고 있는 자전거, 자동차, 자전거 등과 같은 차량의 예를 고려해 보겠습니다. 그래서 우리는 인터페이스를 만들고 이러한 모든 공통 기능을 넣습니다. 그리고 자전거, 자전거, 자동차 등이 이러한 모든 기능을 자체 클래스에서 자체 방식으로 구현하도록 합니다.
C++에서 모듈로란 무엇입니까?
다음은 위 주제의 구현입니다.
자바 // Java program to demonstrate the // real-world example of Interfaces import java.io.*; interface Vehicle { // all are the abstract methods. void changeGear(int a); void speedUp(int a); void applyBrakes(int a); } class Bicycle implements Vehicle{ int speed; int gear; // to change gear @Override public void changeGear(int newGear){ gear = newGear; } // to increase speed @Override public void speedUp(int increment){ speed = speed + increment; } // to decrease speed @Override public void applyBrakes(int decrement){ speed = speed - decrement; } public void printStates() { System.out.println('speed: ' + speed + ' gear: ' + gear); } } class Bike implements Vehicle { int speed; int gear; // to change gear @Override public void changeGear(int newGear){ gear = newGear; } // to increase speed @Override public void speedUp(int increment){ speed = speed + increment; } // to decrease speed @Override public void applyBrakes(int decrement){ speed = speed - decrement; } public void printStates() { System.out.println('speed: ' + speed + ' gear: ' + gear); } } class GFG { public static void main (String[] args) { // creating an instance of Bicycle // doing some operations Bicycle bicycle = new Bicycle(); bicycle.changeGear(2); bicycle.speedUp(3); bicycle.applyBrakes(1); System.out.println('Bicycle present state :'); bicycle.printStates(); // creating instance of the bike. Bike bike = new Bike(); bike.changeGear(1); bike.speedUp(4); bike.applyBrakes(3); System.out.println('Bike present state :'); bike.printStates(); } }> 산출
Bicycle present state : speed: 2 gear: 2 Bike present state : speed: 1 gear: 1>
Java 인터페이스의 장점
Java에서 인터페이스를 사용하면 다음과 같은 이점이 있습니다.
- 구현 부분에 신경 쓰지 않고도 구현 보안을 달성할 수 있습니다.
- Java에서는 다중 상속이 허용되지 않지만 하나 이상의 인터페이스를 구현할 수 있으므로 인터페이스를 사용하여 이를 활용할 수 있습니다.
인터페이스를 사용한 Java의 다중 상속
다중 상속은 클래스를 사용하여 Java에서 구현할 수 없는 OOP 개념입니다. 그러나 Java에서는 인터페이스를 사용하여 다중 상속을 사용할 수 있습니다. 예를 들어 확인해 보겠습니다.
예:
자바 // Java program to demonstrate How Diamond Problem // Is Handled in case of Default Methods // Interface 1 interface API { // Default method default void show() { // Print statement System.out.println('Default API'); } } // Interface 2 // Extending the above interface interface Interface1 extends API { // Abstract method void display(); } // Interface 3 // Extending the above interface interface Interface2 extends API { // Abstract method void print(); } // Main class // Implementation class code class TestClass implements Interface1, Interface2 { // Overriding the abstract method from Interface1 public void display() { System.out.println('Display from Interface1'); } // Overriding the abstract method from Interface2 public void print() { System.out.println('Print from Interface2'); } // Main driver method public static void main(String args[]) { // Creating object of this class // in main() method TestClass d = new TestClass(); // Now calling the methods from both the interfaces d.show(); // Default method from API d.display(); // Overridden method from Interface1 d.print(); // Overridden method from Interface2 } }> 산출
Default API>
JDK 8의 인터페이스에 추가된 새로운 기능
아래에 언급된 JDK 8 업데이트의 인터페이스에 특정 기능이 추가되었습니다.
1. JDK 8 이전에는 인터페이스가 구현을 정의할 수 없었습니다. 이제 인터페이스 메소드에 대한 기본 구현을 추가할 수 있습니다. 이 기본 구현은 특별한 용도로 사용되며 인터페이스 뒤의 의도에 영향을 주지 않습니다.
기존 인터페이스에 새로운 기능을 추가해야 한다고 가정해 보겠습니다. 분명히 클래스가 새로운 기능을 구현하지 않았기 때문에 이전 코드는 작동하지 않습니다. 따라서 기본 구현의 도움으로 새로 추가된 기능에 대한 기본 본문을 제공합니다. 그러면 이전 코드가 계속 작동합니다.
다음은 위 사항을 구현한 것입니다.
자바 // Java program to show that interfaces can // have methods from JDK 1.8 onwards interface In1 { final int a = 10; default void display() { System.out.println('hello'); } } // A class that implements the interface. class TestClass implements In1 { // Driver Code public static void main (String[] args) { TestClass t = new TestClass(); t.display(); } }> 산출
hello>
2. JDK 8에 추가된 또 다른 기능은 이제 객체 없이 독립적으로 호출할 수 있는 인터페이스에서 정적 메서드를 정의할 수 있다는 것입니다.
메모: 이러한 메서드는 상속되지 않습니다.
자바 // Java Program to show that interfaces can // have methods from JDK 1.8 onwards interface In1 { final int a = 10; static void display() { System.out.println('hello'); } } // A class that implements the interface. class TestClass implements In1 { // Driver Code public static void main (String[] args) { In1.display(); } }> 산출
hello>
인터페이스 확장
하나의 인터페이스는 키워드 확장을 사용하여 다른 인터페이스를 상속할 수 있습니다. 클래스가 다른 인터페이스를 상속하는 인터페이스를 구현할 때 인터페이스 상속 체인에 필요한 모든 메서드에 대한 구현을 제공해야 합니다.
프로그램 1:
자바 interface A { void method1(); void method2(); } // B now includes method1 and method2 interface B extends A { void method3(); } // the class must implement all method of A and B. class gfg implements B { public void method1() { System.out.println('Method 1'); } public void method2() { System.out.println('Method 2'); } public void method3() { System.out.println('Method 3'); } }> 프로그램 2:
Excel에서 첫 번째 문자를 제거하는 방법자바
interface Student { public void data(); } class avi implements Student { public void data () { String name='avinash'; int rollno=68; System.out.println(name); System.out.println(rollno); } } public class inter_face { public static void main (String args []) { avi h= new avi(); h.data(); } }> 산출
avinash 68>
간단한 방법으로 인터페이스에는 여러 추상 메서드가 포함되어 있으므로 구현 클래스에 구현을 작성합니다. 구현이 모든 추상 메소드의 구현을 제공할 수 없는 경우 추상 수정자를 사용하여 구현 클래스를 선언하고 다음에 생성된 하위 클래스에서 나머지 메소드 구현을 완료합니다. 여러 자식 클래스를 선언하는 것이 가능하지만 최종적으로 모든 추상 메서드 구현이 완료되었습니다.
현지 날짜 자바
일반적으로 개발 프로세스는 단계별로 진행됩니다.
레벨 1 – 인터페이스: 서비스 세부정보가 포함되어 있습니다.
2 단계 – 추상 클래스: 부분 구현이 포함되어 있습니다.
레벨 3 – 구현 클래스: 모든 구현을 포함합니다.
레벨 4 – 최종 코드/주 메서드: 모든 인터페이스 데이터에 액세스할 수 있습니다.
예:
자바 // Java Program for // implementation Level wise import java.io.*; import java.lang.*; import java.util.*; // Level 1 interface Bank { void deposit(); void withdraw(); void loan(); void account(); } // Level 2 abstract class Dev1 implements Bank { public void deposit() { System.out.println('Your deposit Amount :' + 100); } } abstract class Dev2 extends Dev1 { public void withdraw() { System.out.println('Your withdraw Amount :' + 50); } } // Level 3 class Dev3 extends Dev2 { public void loan() {} public void account() {} } // Level 4 class GFG { public static void main(String[] args) { Dev3 d = new Dev3(); d.account(); d.loan(); d.deposit(); d.withdraw(); } }> 산출
Your deposit Amount :100 Your withdraw Amount :50>
JDK 9의 인터페이스에 추가된 새로운 기능
Java 9부터 인터페이스에는 다음도 포함될 수 있습니다.
- 정적 방법
- 비공개 메소드
- 개인 정적 메서드
Java 인터페이스의 중요 사항
이 기사에서는 아래에 언급된 인터페이스에 대한 중요한 사항을 배웁니다.
- 인터페이스의 인스턴스를 생성할 수는 없지만(인터페이스는 인스턴스화할 수 없음) 구현 클래스의 객체를 참조하는 참조를 만들 수 있습니다.
- 클래스는 둘 이상의 인터페이스를 구현할 수 있습니다.
- 인터페이스는 다른 인터페이스나 인터페이스(둘 이상의 인터페이스)로 확장될 수 있습니다.
- 인터페이스를 구현하는 클래스는 인터페이스의 모든 메서드를 구현해야 합니다.
- 모든 메소드는 공개적이고 추상적입니다. 그리고 모든 필드는 public, static 및 final입니다.
- 다중 상속을 달성하는 데 사용됩니다.
- 느슨한 결합을 달성하는 데 사용됩니다.
- 인터페이스 내부에서는 기본적으로 변수가 다음과 같기 때문에 인스턴스 변수를 선언할 수 없습니다. 공개 정적 최종.
- 인터페이스 내부에서는 생성자가 허용되지 않습니다.
- 인터페이스 내부에서는 기본 메소드가 허용되지 않습니다.
- 인터페이스 내부에서는 static, final, private 메소드 선언이 불가능합니다.
꼭 읽어야 할
- 인터페이스 메서드의 액세스 지정자
- Java의 클래스 또는 인터페이스에 대한 액세스 지정자
- Java의 추상 클래스
- Java의 비교기 인터페이스
- Java 인터페이스 방법
- Java의 중첩 인터페이스
인터페이스에 대해 자주 묻는 질문
1. 마커 또는 태그 인터페이스란 무엇입니까?
태그된 인터페이스는 기능 없이 표시자 역할을 하는 메서드가 없는 인터페이스입니다.
2. Java에는 몇 가지 유형의 인터페이스가 있습니까?
Java의 인터페이스 유형은 다음과 같습니다.
- 기능적 인터페이스
- 마커 인터페이스
3. Java에서 클래스를 통한 다중 상속이 지원되지 않는 이유는 무엇입니까?
다중 상속은 모호함 및 다이아몬드 문제와 같은 특정 문제를 피하기 위해 Java의 클래스를 통해 지원되지 않습니다.