Theorie Duplicate default methods

CSHW89

Bekanntes Mitglied
Hallo zusammen,

ich habe mal eine kleine theoretische Frage. Durch "default" Methoden gibt es ja bekanntlich bei folgenden Code die Fehlermeldung "Duplicate default methods named func with the parameters () and () are inherited from the types Test.I2 and Test.I1":
Java:
public class Test {
    interface I1 {
        default public int func() {
            return 2;
        }
    }
    interface I2 {
        default public int func() {
            return 3;
        }
    }
    static class ClassA implements I1,I2 {
    }
}
Warum gibt es aber bei folgendem Code keine Fehlermeldung? Warum gewinnt dort die Methode von "Both"?
Java:
public class Test {
    interface I1 {
        default public int func() {
            return 2;
        }
    }
    interface I2 {
        default public int func() {
            return 3;
        }
    }
    interface Both extends I1,I2 {
        default public int func() {
            return 4;
        }
    }
    static class ClassB implements I1,Both {
    }
    public static void main(String[] args) {
        ClassB obj = new ClassB();
        System.out.println(obj.func());
    }
}
 

mrBrown

Super-Moderator
Mitarbeiter
Aus JLS 8.4.8:

A class C inherits from its direct superclass type and direct superinterface types all abstract and default (§9.4) methods m for which all of the following are true:
[....]
  • There exists no method m' that is a member of the direct superclass type or a direct superinterface type of C, D' (m distinct from m', D distinct from D'), such that m' overrides from the class or interface of D' the declaration of the method m (§8.4.8.1, §9.4.1.1).
mit: D = I1, m=I1#func, D' = Both, m'= Both#func
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Java Theorie-Fragen Allgemeine Java-Themen 7
S Theorie hinter Shape intersects Test..? Allgemeine Java-Themen 5
V Duplicate Methode Problem bei überladener Methode Allgemeine Java-Themen 6
P Duplicate name in Manifest Allgemeine Java-Themen 6
W Socket.setSoTimeout -> BufferedReader -> Default value Allgemeine Java-Themen 4
S @Value mit bestimmt Werten, sonst default Allgemeine Java-Themen 42
S Input/Output Jave.utill.logging ohne Default-Locale also in Englisch Allgemeine Java-Themen 3
S Eclipse TestNG Default Test umbenennen Allgemeine Java-Themen 0
P Default constructor cannot handle exception type Allgemeine Java-Themen 6
Kr0e Reflection - Instanz einer Klasse erstellen, ohne Default-Constructor Allgemeine Java-Themen 15
V Zugriff auf Default-Package? Allgemeine Java-Themen 6
G JAXB "no default constructor" Allgemeine Java-Themen 2
J Kein Zugriff auf Klassen im Default Package Allgemeine Java-Themen 8
G default button für enter taste Allgemeine Java-Themen 3
E Was ist "default package" in Eclipse konkret? Allgemeine Java-Themen 12
T auf Klasse in Default package zugreifen Allgemeine Java-Themen 10
B platform's default character encoding? Allgemeine Java-Themen 10
X Default-Werte für Methoden-/Funktions-Parameter Allgemeine Java-Themen 2
S Problem bei Umstellung von (default package) auf Packages Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben