2013-04-12 9 views
7

Während einer Diskussion einer meiner Freundin sagen mir, dass concrete methods would be allowed in java 1.8 in interfaces dann zu diesem Zeitpunkt eine Frage in den Sinn kam, das heißt, wenn sie berechtigt sind, dann Wie werden wir das Methoden.Zum Beispiel
Ich habe unterscheiden zwei Schnittstellen Animal.java und Pet.java und beide haben gleiche konkretes Verfahren dh eat()
konkrete Methoden in Schnittstellen Java1.8

public interfaces Animal{ 

     void eat(){ 
       System.out.println("Animal Start eating ...."); 
     } 
    } 

    public interfaces Pet{ 

     void eat(){ 
       System.out.println("Pet Start eating ...."); 
     } 
    } 

meine Zoo.java nun diese beiden implementieren und nicht

hat außer Kraft setzen

Hier ist mein confusion.How kann ich eine bestimmte Methode auf inteface rufen animal mit Test Objekt

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

       Zoo zoo = new Zoo(); 
       zoo.eat(); //What would be the output 
     } 
} 

Irgendwelche Vorschläge? oder gibt es dafür eine lösung in java1.8, da ich keine antwort finde.

+0

sein sollte, aber ich fand nicht, diese Antworten in diese question.if es ist ein Duplikat dann bitte leite mich zu diesem Thema Resolvatisierung – Freak

+0

dies auch von itnerest sein könnte, statisch nicht vererbten Methoden in Schnittstellen http://StackOverflow.com/Q/14646027/106261 – NimChimpsky

+0

Ihre ursprüngliche Frage wird hier beantwortet http://StackOverflow.com/A/7857884/106261 – NimChimpsky

Antwort

5

Sie erhalten einen Kompilierzeitfehler, es sei denn, Sie überschreiben essen in Ihrer Zoo-Klasse.

java: class defaultMethods.Zoo inherits unrelated defaults for eat() from types Pet and Animal 

Die neueste und geatest jdk ist here btw. Und die Syntax

default void eat(){ 
    System.out.println("Animal Start eating ...."); 
} 
+0

toll :) also in diesem fall werden beide methoden (von Animal & Pet) aktualisiert? Recht? – Freak

+0

nicht aktualisiert, überschreiben – NimChimpsky

+0

eine letzte Sache, es bedeutet, wenn wir Standard konkrete Methoden mit demselben Namen haben, dann sollten wir die Standardmethode überschreiben? sonst ist es ein Kompilierzeitfehler? – Freak

Verwandte Themen