java
인터페이스는 Java에서 참조 유형입니다. 클래스와 비슷합니다. 추상 메서드 모음입니다. 클래스는 인터페이스를 구현하므로 인터페이스의 추상 메서드를 상속합니다.
추상 메서드와 함께 인터페이스에는 상수, 기본 메서드, 정적 메서드 및 중첩 형식도 포함될 수 있습니다. 메서드 본문은 기본 메서드와 정적 메서드에만 존재합니다.
인터페이스를 작성하는 것은 클래스를 작성하는 것과 유사합니다. 그러나 클래스는 개체의 속성과 동작을 설명합니다. 그리고 인터페이스에는 클래스가 구현하는 동작이 포함됩니다.
인터페이스를 구현하는 클래스가 추상 클래스가 아닌 한 인터페이스의 모든 메소드는 클래스에서 정의해야 합니다.
인터페이스는 다음과 같은 면에서 클래스와 유사합니다. -
인터페이스에는 여러 메서드가 포함될 수 있습니다.
인터페이스는 .java가 있는 파일에 작성됩니다. 확장자, 인터페이스 이름이 파일 이름과 일치합니다.
인터페이스의 바이트 코드는 .class에 나타납니다. 파일.
인터페이스는 패키지에 나타나며 해당 바이트코드 파일은 패키지 이름과 일치하는 디렉토리 구조에 있어야 합니다.
그러나 인터페이스는 다음을 포함하여 여러 면에서 클래스와 다릅니다 -
인터페이스를 인스턴스화할 수 없습니다.
인터페이스에 생성자가 없습니다.
인터페이스의 모든 메소드는 추상적입니다.
인터페이스는 인스턴스 필드를 포함할 수 없습니다. 인터페이스에 나타날 수 있는 유일한 필드는 static 및 final로 선언되어야 합니다.
인터페이스는 클래스에 의해 확장되지 않습니다. 클래스에 의해 구현됩니다.
인터페이스는 여러 인터페이스를 확장할 수 있습니다.
인터페이스 키워드는 인터페이스를 선언하는 데 사용됩니다. 다음은 인터페이스를 선언하는 간단한 예입니다 -
다음은 인터페이스의 예입니다 -
/* 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
자바 PrintStream 클래스 이 자습서에서는 예제를 통해 Java PrintStream 클래스와 해당 print() 및 printf() 메서드에 대해 배웁니다. PrintStream java.io 클래스 패키지는 바이트 대신 일반적으로 읽을 수 있는 형식(텍스트)으로 출력 데이터를 쓰는 데 사용할 수 있습니다. 추상 클래스 OutputStream를 확장합니다. . PrintStream 작업 다른 출력 스트림과 달리 PrintStream 기본 데이터(정수, 문자)를 바이트 대신 텍스트 형식으로 변환합니다. 그런 다음
자바 리더 클래스 이 자습서에서는 예제를 통해 Java Reader, 하위 클래스 및 메서드에 대해 알아봅니다. Reader java.io 클래스 패키지는 문자 스트림을 나타내는 추상 슈퍼클래스입니다. Reader 이후 추상 클래스이므로 그 자체로는 유용하지 않습니다. 그러나 하위 클래스를 사용하여 데이터를 읽을 수 있습니다. 리더의 하위 클래스 Reader의 기능을 사용하려면 , 우리는 그 하위 클래스를 사용할 수 있습니다. 그 중 일부는 다음과 같습니다. BufferedReader InputStreamReader 파일