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

자바 인터페이스

자바 인터페이스

이 튜토리얼에서는 Java 인터페이스에 대해 배웁니다. 인터페이스를 구현하는 방법과 언제 사용해야 하는지 예제를 통해 자세히 알아보겠습니다.

인터페이스는 완전히 추상적인 클래스입니다. 여기에는 추상 메서드 그룹(본문 없는 메서드)이 포함됩니다.

interface을 사용합니다. Java에서 인터페이스를 생성하는 키워드. 예를 들어,

interface Language {
  public void getType();

  public void getVersion();
}

여기,

<시간>

인터페이스 구현

추상 클래스와 마찬가지로 인터페이스의 개체를 만들 수 없습니다.

인터페이스를 사용하려면 다른 클래스에서 인터페이스를 구현해야 합니다. implements을 사용합니다. 인터페이스를 구현하는 키워드입니다.

예제 1:자바 인터페이스

interface Polygon {
  void getArea(int length, int breadth);
}

// implement the Polygon interface
class Rectangle implements Polygon {

  // implementation of abstract method
  public void getArea(int length, int breadth) {
    System.out.println("The area of the rectangle is " + (length * breadth));
  }
}

class Main {
  public static void main(String[] args) {
    Rectangle r1 = new Rectangle();
    r1.getArea(5, 6);
  }
}

출력

The area of the rectangle is 30

위의 예에서 Polygon이라는 인터페이스를 만들었습니다. . 인터페이스에 추상 메서드 getArea()가 포함되어 있습니다. .

여기서 사각형 클래스는 Polygon을 구현합니다. . 그리고 getArea()의 구현을 제공합니다. 방법.

<시간>

예제 2:자바 인터페이스

// create an interface
interface Language {
  void getName(String name);
}

// class implements interface
class ProgrammingLanguage implements Language {

  // implementation of abstract method
  public void getName(String name) {
    System.out.println("Programming Language: " + name);
  }
}

class Main {
  public static void main(String[] args) {
    ProgrammingLanguage language = new ProgrammingLanguage();
    language.getName("Java");
  }
}

출력

Programming Language: Java

위의 예에서 Language라는 인터페이스를 만들었습니다. . 인터페이스에는 추상 메소드 getName()이 포함됩니다. .

여기에서 ProgrammingLanguage 클래스는 인터페이스를 구현하고 메서드에 대한 구현을 제공합니다.

<시간>

여러 인터페이스 구현

Java에서 클래스는 여러 인터페이스를 구현할 수도 있습니다. 예를 들어,

interface A {
  // members of A
}

interface B {
  // members of B
}

class C implements A, B {
  // abstract members of A
  // abstract members of B
}
<시간>

인터페이스 확장

클래스와 유사하게 인터페이스는 다른 인터페이스를 확장할 수 있습니다. extends 키워드는 인터페이스를 확장하는 데 사용됩니다. 예를 들어,

interface Line {
  // members of Line interface
}

// extending interface
interface Polygon extends Line {
  // members of Polygon interface
  // members of Line interface
}

여기서 다각형 인터페이스는 Line을 확장합니다. 상호 작용. 이제 클래스가 Polygon을 구현하는 경우 , 두 Line의 모든 추상 메서드에 대한 구현을 제공해야 합니다. 및 다각형 .

<시간>

여러 인터페이스 확장

인터페이스는 여러 인터페이스를 확장할 수 있습니다. 예를 들어,

interface A {
   ...
}
interface B {
   ... 
}

interface C extends A, B {
   ...
}
<시간>

자바 인터페이스의 장점

인터페이스가 무엇인지 알았으니 Java에서 인터페이스가 사용되는 이유에 대해 알아보겠습니다.

참고 :인터페이스 내부의 모든 메소드는 암시적으로 public입니다. 모든 필드는 암시적으로 public static final입니다. . 예를 들어,

interface Language {
  
  // by default public static final
  String type = "programming language";

  // by default public
  void getName();
}
<시간>

자바 인터페이스의 기본 메소드

Java 8이 출시되면서 이제 인터페이스 내부에 구현된 메서드를 추가할 수 있습니다. 이러한 방법을 기본 방법이라고 합니다.

인터페이스 내에서 기본 메서드를 선언하려면 default를 사용합니다. 예어. 예를 들어,

public default void getSides() {
   // body of getSides()
}

기본 방법이 필요한 이유

Java에 기본 메소드가 도입된 이유를 이해하는 시나리오를 살펴보겠습니다.

인터페이스에 새 메서드를 추가해야 한다고 가정해 보겠습니다.

구현 없이 인터페이스에 메서드를 쉽게 추가할 수 있습니다. 그러나 그것이 이야기의 끝이 아닙니다. 해당 인터페이스를 구현하는 모든 클래스는 메서드에 대한 구현을 제공해야 합니다.

많은 수의 클래스가 이 인터페이스를 구현하는 경우 이러한 모든 클래스를 추적하고 변경해야 합니다. 이것은 지루할 뿐만 아니라 오류가 발생하기 쉽습니다.

이를 해결하기 위해 Java는 기본 메소드를 도입했습니다. 기본 메소드는 일반 메소드처럼 상속됩니다.

기본 메소드를 더 잘 이해하기 위해 예를 들어보겠습니다.

<시간>

예:자바 인터페이스의 기본 메소드

interface Polygon {
  void getArea();

  // default method 
  default void getSides() {
    System.out.println("I can get sides of a polygon.");
  }
}

// implements the interface
class Rectangle implements Polygon {
  public void getArea() {
    int length = 6;
    int breadth = 5;
    int area = length * breadth;
    System.out.println("The area of the rectangle is " + area);
  }

  // overrides the getSides()
  public void getSides() {
    System.out.println("I have 4 sides.");
  }
}

// implements the interface
class Square implements Polygon {
  public void getArea() {
    int length = 5;
    int area = length * length;
    System.out.println("The area of the square is " + area);
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of Rectangle
    Rectangle r1 = new Rectangle();
    r1.getArea();
    r1.getSides();

    // create an object of Square
    Square s1 = new Square();
    s1.getArea();
    s1.getSides();
  }
}

출력

The area of the rectangle is 30
I have 4 sides.
The area of the square is 25
I can get sides of a polygon.

위의 예에서 Polygon이라는 인터페이스를 만들었습니다. . 기본 메소드 getSides()이 있습니다. 및 추상 메소드 getArea() .

여기에서 두 개의 클래스 Rectangle를 만들었습니다. 및 사각형 Polygon 구현 .

사각형 클래스는 getArea()의 구현을 제공합니다. 메소드 및 getSides() 재정의 방법. 그러나 사각형 클래스는 getArea()의 구현만 제공합니다. 방법.

이제 getSides()을 호출하는 동안 Rectangle을 사용하는 메소드 개체에서 재정의된 메서드가 호출됩니다. 그러나 사각형의 경우 개체의 경우 기본 메서드가 호출됩니다.

<시간>

인터페이스의 개인 및 정적 메소드

Java 8은 또한 인터페이스 내부에 정적 메소드를 포함하는 또 다른 기능을 추가했습니다.

클래스와 유사하게 참조를 사용하여 인터페이스의 정적 메서드에 액세스할 수 있습니다. 예를 들어,

// create an interface
interface Polygon {
  staticMethod(){..}
}

// access static method
Polygon.staticMethod();

참고 :Java 9 릴리스와 함께 인터페이스에서도 private 메소드가 지원됩니다.

인터페이스의 개체를 만들 수 없습니다. 따라서 개인 메서드는 인터페이스의 다른 메서드를 지원하는 도우미 메서드로 사용됩니다.

<시간>

인터페이스의 실제 예

좀 더 실용적인 자바 인터페이스의 예를 보자.

// To use the sqrt function
import java.lang.Math;

interface  Polygon {
   void getArea();
  
 // calculate the perimeter of a Polygon
   default void getPerimeter(int... sides) {
      int perimeter = 0;
      for (int side: sides) {
         perimeter += side;
      }

   System.out.println("Perimeter: " + perimeter);
   }
}

class Triangle implements Polygon {
   private int a, b, c;
   private double s, area;

// initializing sides of a triangle
   Triangle(int a, int b, int c) {
      this.a = a;
      this.b = b;
      this.c = c;
      s = 0;
   }

// calculate the area of a triangle
   public void getArea() {
      s = (double) (a + b + c)/2;
      area = Math.sqrt(s*(s-a)*(s-b)*(s-c));
      System.out.println("Area: " + area);
   }
}

class Main {
   public static void main(String[] args) {
      Triangle t1 = new Triangle(2, 3, 4);

// calls the method of the Triangle class
      t1.getArea();

// calls the method of Polygon
      t1.getPerimeter(2, 3, 4);
   }
}

출력

Area: 2.9047375096555625
Perimeter: 9

위의 프로그램에서 Polygon이라는 인터페이스를 만들었습니다. . 여기에는 기본 메소드 getPerimeter()이 포함됩니다. 및 추상 메소드 getArea() .

모든 다각형의 둘레를 동일한 방식으로 계산할 수 있으므로 getPerimeter()의 본문을 구현했습니다. 다각형 .

이제 Polygon을 구현하는 모든 다각형 getPerimeter() 사용 가능 둘레를 계산합니다.

그러나 면적 계산 규칙은 다각형마다 다릅니다. 따라서 getArea() 구현 없이 포함됩니다.

Polygon을 구현하는 모든 클래스 getArea() 구현을 제공해야 합니다. .


java

  1. C# 인터페이스
  2. 자바 연산자
  3. 자바 주석
  4. 자바 리소스 사용
  5. 자바 주석
  6. Java NavigableSet 인터페이스
  7. 자바 람다 표현식
  8. Java의 인터페이스 대 추상 클래스:차이점은 무엇입니까?
  9. 자바 - 인터페이스
  10. Java 9 - 개인 인터페이스 메소드