Java8 인터페이스의 기본 메소드
기본 방법은 무엇이며 기본 메소드가있는 이유는 무엇입니까?
간단히 말해서 인터페이스에는 구현 방법이있을 수 있으며 메소드를 구현하기 위해 클래스를 구현할 필요가 없습니다. 메소드 이름 앞에 기본 키워드를 추가하십시오.
이 기능이 필요한 이유는 무엇입니까? 우선, 이전 인터페이스는 양날의 칼이었습니다. 장점은 콘크리트 프로그래밍보다는 추상을 목표로한다는 것이었다. 단점은 인터페이스를 수정해야 할 때 인터페이스를 구현 한 모든 클래스를 수정해야한다는 것입니다. Java 8 이전의 현재 컬렉션 프레임 워크에는 Foreach 방법이 없었습니다. 생각할 수있는 솔루션은 JDK의 관련 인터페이스에 새로운 방법과 구현을 추가하는 것입니다. 그러나 게시 된 버전의 경우 기존 구현에 영향을 미치지 않고 인터페이스에 새로운 메소드를 추가하는 것은 불가능합니다. 기본 메소드가 도입되었습니다. 그들의 목적은 인터페이스를 기존 구현과 호환되지 않도록하는 것입니다.
아래 그림과 같이
public Interface Animal {default void eat () {system.out.println ( "동물 eat default method"); }} 인터페이스가 선언되며 내부에는 기본 메소드가 하나뿐입니다. 그런 다음 특정 클래스를 작성 하여이 인터페이스를 구현하십시오.
공개 계급 개는 동물을 구현합니다. } public static void main (String args []) {dog dog = new dog (); dog.eat (); }}특정 클래스에서는 기본 메소드를 무시할 필요는 없지만 추상 방법을 구현해야합니다.
기본 방법의 다중 상속
아래에 표시된 코드,
공개 인터페이스 a {void dosomething (); Default void hello () {System.out.println ( "Hello World from Interface a"); } default void foo () {system.out.println ( "foo from interface a"); }} interface b는 {default void hello () {system.out.println ( "Hello World from Interface B")을 확장합니다. a.super.hello (); this.foo (); a.super.foo (); }} class c는 b, a {@override public void dosomething () {System.out.println ( "c 객체 필요가 무언가를해야한다"); } public static void main (String args []) {a obj = new c (); obj.hello (); // 호출 B의 메소드 obj.dosomething (); }}인쇄 결과 :
인터페이스에서 Bhello World의 Hello World interface afoo에서 afoo afoo a ac 객체에서 무언가를 할 수 있습니다.
obj.hello ()는 인터페이스 B에서 기본 메소드를 호출합니다. 동시에 인터페이스 B의 기본 메소드는 부모 인터페이스에서 기본 메소드를 호출합니다.
다른 예를 살펴보고 아래와 같이 여러 상속에서 동일한 이름의 기본 메소드에 대해 생각해 봅시다.
public interface d {default void hello () {system.out.println ( "Hello World from d"); }} interface e {default void hello () {system.out.println ( "Hello World from e"); }} class F는 d, e {@override public void hello () {system.out.println ( "hello world f class"); d.super.hello (); e.super.hello (); } public static void main (String args []) {f f = new f (); F.Hello (); }} 다음과 같이 호출하려면 인터페이스의 기본 메소드를 공식화해야합니다.
d.super.hello (); e.super.hello ();
Java8의 기본 방법의 또 다른 예 :
Java8은 인터페이스에 대한 기본 메소드를 추가했습니다. 즉, 인터페이스에 구현 될 수 있습니다. 이 구현 방법은 기본 구현이며 인터페이스 구현 클래스 에서이 기본 메소드를 다시 작성할 수도 있습니다.
다음 예제 :
공개 클래스 AppInterFacedEfaultMethod {public static interface defaultMethoddemo {// 기본 메소드를 기본 메소드가 앞에 놓고 기본 메소드를 정의하고 메소드 선언 및 메소드 기본 void 데모 (String Input) {System.out.println (입력); } void dosomething (); } public static class democlass는 defaultmethoddemo {@override public void dosomething () {system.out.println ( "do something"); }} public static class democlassoverrideMo는 defaultMethodDemo {// 기본 메소드를 다시 작성합니다 @override public void demo (string input) {system.out.println ( "demo" + input + "by Override Method”); } @override public void dosomething () {system.out.println ( "do something"); }} public static void main (String [] args) {defaultMethoddemo demo = new democlass (); Demo.demo ( "ABC"); DefaultMethoddemo demooverride = 새로운 democlassoverridedemo (); Demooverride.demo ( "ABC"); }}위의 것은 Java8 인터페이스의 기본 메소드에 대한 자세한 소개이며 모든 사람의 학습에 도움이되기를 바랍니다.