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

Java 8 기본 메서드 설명: 인터페이스 향상 및 하위 호환성

Java 8은 인터페이스에 기본 메서드 구현이라는 새로운 개념을 도입했습니다. 이 기능은 기존 인터페이스가 Java 8의 람다 표현식 기능을 활용할 수 있도록 하위 호환성을 위해 추가되었습니다.

예를 들어, List나 Collection 인터페이스에는 forEach 메서드 선언이 없습니다. 따라서 이러한 메서드를 단순히 추가하면 컬렉션 프레임워크 구현이 깨집니다. Java 8은 기본 메서드를 도입해 List/Collection 인터페이스가 forEach 메서드의 기본 구현을 가질 수 있게 하고, 이 인터페이스를 구현하는 클래스는 이를 구현할 필요가 없도록 했습니다.

구문

public interface Vehicle {
    default void print() {
        System.out.println("I am a vehicle!");
    }
}

다중 기본 메서드 충돌 해결

인터페이스에 기본 함수가 있으면, 한 클래스가 같은 기본 메서드를 가진 두 인터페이스를 구현할 가능성이 있습니다. 다음 코드로 이 모호성을 해결하는 방법을 설명합니다.

public interface Vehicle {
    default void print() { System.out.println("I am a vehicle!"); }
}

public interface FourWheeler {
    default void print() { System.out.println("I am a four wheeler!"); }
}

첫 번째 해결책: 기본 구현을 오버라이드하는 자체 메서드 생성

public class Car implements Vehicle, FourWheeler {
    public void print() { System.out.println("I am a four wheeler car vehicle!"); }
}

두 번째 해결책: super를 사용해 지정된 인터페이스의 기본 메서드 호출

public class Car implements Vehicle, FourWheeler {
    public void print() { Vehicle.super.print(); }
}

정적 기본 메서드

Java 8부터 인터페이스에 정적 헬퍼 메서드도 가질 수 있습니다.

public interface Vehicle {
    default void print() { System.out.println("I am a vehicle!"); }
    static void blowHorn() { System.out.println("Blowing horn!!!"); }
}

기본 메서드 예제

원하는 에디터로 다음 Java 프로그램 생성 (예: C:\JAVA).

Java8Tester.java

public class Java8Tester {
    public static void main(String args[]) {
        Vehicle vehicle = new Car();
        vehicle.print();
    }
}

interface Vehicle {
    default void print() { System.out.println("I am a vehicle!"); }
    static void blowHorn() { System.out.println("Blowing horn!!!"); }
}

interface FourWheeler {
    default void print() { System.out.println("I am a four wheeler!"); }
}

class Car implements Vehicle, FourWheeler {
    public void print() {
        Vehicle.super.print();
        FourWheeler.super.print();
        Vehicle.blowHorn();
        System.out.println("I am a car!");
    }
}

결과 검증

javac 컴파일러로 클래스 컴파일:

C:\JAVA> javac Java8Tester.java

Java8Tester 실행:

C:\JAVA> java Java8Tester

다음 출력 생성:

I am a vehicle!
I am a four wheeler!
Blowing horn!!!
I am a car!

java

  1. Java 연산자 마스터하기: 종류, 문법, 실전 예제
  2. Java 주석: 종류, 사용법, 모범 사례
  3. Java 향상된 for 루프(for-each) 완벽 가이드: 문법, 예제, 비교
  4. Java String 마스터하기: 생성, 메서드, 모범 사례
  5. Java 추상 클래스와 메서드 완벽 가이드
  6. Java 인터페이스 마스터: 개념, 구현, 모범 사례
  7. Java 익명 내부 클래스 마스터: 정의, 문법, 실전 예제
  8. Java Try-with-Resources 마스터: 자동 리소스 관리 완전 해설
  9. Java 애너테이션 완전 해설: 종류, 배치 위치, 실전 예제
  10. Java Assertion(어설션) 실전 가이드: 버그 조기 발견과 코드 신뢰성 확보