산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

자바 - 인터페이스

인터페이스는 Java에서 참조 유형입니다. 클래스와 비슷합니다. 추상 메서드 모음입니다. 클래스는 인터페이스를 구현하므로 인터페이스의 추상 메서드를 상속합니다.

추상 메서드와 함께 인터페이스에는 상수, 기본 메서드, 정적 메서드 및 중첩 형식도 포함될 수 있습니다. 메서드 본문은 기본 메서드와 정적 메서드에만 존재합니다.

인터페이스를 작성하는 것은 클래스를 작성하는 것과 유사합니다. 그러나 클래스는 개체의 속성과 동작을 설명합니다. 그리고 인터페이스에는 클래스가 구현하는 동작이 포함됩니다.

인터페이스를 구현하는 클래스가 추상 클래스가 아닌 한 인터페이스의 모든 메소드는 클래스에서 정의해야 합니다.

인터페이스는 다음과 같은 면에서 클래스와 유사합니다. -

그러나 인터페이스는 다음을 포함하여 여러 면에서 클래스와 다릅니다 -

인터페이스 선언

인터페이스 키워드는 인터페이스를 선언하는 데 사용됩니다. 다음은 인터페이스를 선언하는 간단한 예입니다 -

예시

다음은 인터페이스의 예입니다 -

/* File name : NameOfInterface.java */
import java.lang.*;
// Any number of import statements

public interface NameOfInterface {
   // Any number of final, static fields
   // Any number of abstract method declarations\
}

인터페이스에는 다음과 같은 속성이 있습니다. -

예시

/* File name : Animal.java */
interface Animal {
   public void eat();
   public void travel();
}

인터페이스 구현

클래스가 인터페이스를 구현하면 클래스를 계약에 서명하고 인터페이스의 특정 동작을 수행하는 데 동의하는 것으로 생각할 수 있습니다. 클래스가 인터페이스의 모든 동작을 수행하지 않는 경우 클래스는 자신을 추상으로 선언해야 합니다.

클래스는 구현을 사용합니다. 인터페이스를 구현하는 키워드입니다. implements 키워드는 선언의 extends 부분 다음에 오는 클래스 선언에 나타납니다.

예시

/* File name : MammalInt.java */
public class MammalInt implements Animal {

   public void eat() {
      System.out.println("Mammal eats");
   }

   public void travel() {
      System.out.println("Mammal travels");
   } 

   public int noOfLegs() {
      return 0;
   }

   public static void main(String args[]) {
      MammalInt m = new MammalInt();
      m.eat();
      m.travel();
   }
} 

이것은 다음과 같은 결과를 생성합니다 -

출력

Mammal eats
Mammal travels

인터페이스에 정의된 메소드를 재정의할 때 따라야 할 몇 가지 규칙이 있습니다 -

구현 인터페이스에는 몇 가지 규칙이 있습니다 -

인터페이스 확장

인터페이스는 클래스가 다른 클래스를 확장할 수 있는 것과 같은 방식으로 다른 인터페이스를 확장할 수 있습니다. 확장 키워드는 인터페이스를 확장하는 데 사용되며 자식 인터페이스는 부모 인터페이스의 메서드를 상속합니다.

다음 스포츠 인터페이스는 하키 및 축구 인터페이스로 확장됩니다.

예시

// Filename: Sports.java
public interface Sports {
   public void setHomeTeam(String name);
   public void setVisitingTeam(String name);
}

// Filename: Football.java
public interface Football extends Sports {
   public void homeTeamScored(int points);
   public void visitingTeamScored(int points);
   public void endOfQuarter(int quarter);
}

// Filename: Hockey.java
public interface Hockey extends Sports {
   public void homeGoalScored();
   public void visitingGoalScored();
   public void endOfPeriod(int period);
   public void overtimePeriod(int ot);
}

Hockey 인터페이스에는 네 가지 방법이 있지만 Sports에서 두 가지를 상속합니다. 따라서 Hockey를 구현하는 클래스는 6가지 메서드를 모두 구현해야 합니다. 마찬가지로 Football을 구현하는 클래스는 Football에서 세 가지 메서드를 정의하고 Sports에서 두 가지 메서드를 정의해야 합니다.

여러 인터페이스 확장

Java 클래스는 하나의 상위 클래스만 확장할 수 있습니다. 다중 상속은 허용되지 않습니다. 그러나 인터페이스는 클래스가 아니며 인터페이스는 둘 이상의 상위 인터페이스를 확장할 수 있습니다.

extends 키워드는 한 번 사용되며 상위 인터페이스는 쉼표로 구분된 목록으로 선언됩니다.

예를 들어, Hockey 인터페이스가 Sports와 Event를 모두 확장했다면 -

로 선언됩니다.

예시

public interface Hockey extends Sports, Event

인터페이스에 태그 지정

인터페이스 확장의 가장 일반적인 사용은 부모 인터페이스에 메서드가 포함되어 있지 않을 때 발생합니다. 예를 들어, java.awt.event 패키지의 MouseListener 인터페이스는 -

로 정의된 java.util.EventListener를 확장했습니다.

예시

package java.util;
public interface EventListener
{}

메소드가 없는 인터페이스를 태그 지정이라고 합니다. 상호 작용. 인터페이스에 태그를 지정하는 두 가지 기본 설계 목적이 있습니다. -

공통 부모 생성 − Java API에서 수십 개의 다른 인터페이스로 확장된 EventListener 인터페이스와 마찬가지로 태그 지정 인터페이스를 사용하여 인터페이스 그룹 간에 공통 부모를 만들 수 있습니다. 예를 들어, 인터페이스가 EventListener를 확장할 때 JVM은 이 특정 인터페이스가 이벤트 위임 시나리오에서 사용될 것임을 알고 있습니다.

클래스에 데이터 유형 추가 − 이 상황에서 태깅이라는 용어가 유래되었습니다. 태깅 인터페이스를 구현한 클래스는 메소드를 정의할 필요가 없으나(인터페이스가 없기 때문에), 클래스는 다형성을 통해 인터페이스 유형이 됩니다.


java

  1. 자바 최종 키워드
  2. 자바 instanceof 연산자
  3. 자바 인터페이스
  4. 자바 중첩 정적 클래스
  5. 자바 익명 클래스
  6. 자바 싱글톤 클래스
  7. 자바 리플렉션
  8. 자바 ObjectOutputStream 클래스
  9. 자바 제네릭
  10. 자바 파일 클래스