Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
eine Sache vorweg (da mich hierfür bestimmt wieder einige Leute scharf kritisieren werden). Ich kann das folgende Codebeispiel nicht selbst austesten, da ich derzeit einen sehr alten und extrem langsamen rechner nutzen muss, auf dem keine aktuelle Java IDE mehr vernünftig läuft.
Ich habe hier drei Intefaces. Diese Interfaces besitzen jeweils eigene Methoden:
Java:
public interface A{
String methode1();
String methode2();
}
Java:
public interface B{
String methode3();
String methode4();
}
Java:
public interface C{
String methode5();
String methode6();
}
Nun gibt es eine Klasse, die diese drei Interfaces implementiert:
Java:
public class Testklasse implements interface A, interface B, interface C{
//hier finden irgendwelche Implementierungen der Methoden statt
}
Nun existiert noch eine Ausgabeklasse (und eben genau hier würde ich gerne wissen wollen, ob die folgenden Implementierungen und Methodenaufrufe überhaupt funktionieren):
Java:
public class Ausgabe{
interface A refA = new Testklasse();
refA.methode5(); //würde so etwas funktionieren?
refA.methode3(); //geht das?
refA.methode1(); //ok?
interface B refB = new Testklasse();
refB.methode3(); //funktioniert das?
refB.methode6(); //ok?
}
Ich vermute, dass es nicht durchläuft, sicher bin ich mir dabei aber nicht.
Nein, das würde nicht funktionieren. Wenn du eine Variable eines bestimmten Typs (hier interface A) deklarierst, stehen Dir auch nur die Methoen von Interface A zur Verfügung.
Wenn Du auf alle Methoden Zugriff haben willst, könntest Du ein Interface ABC definieren, das A, B und C extended und dann Deine Klasse das Interface ABC implementieren lassen.
Ich kann das folgende Codebeispiel nicht selbst austesten, da ich derzeit einen sehr alten und extrem langsamen rechner nutzen muss, auf dem keine aktuelle Java IDE mehr vernünftig läuft.
Wenn Du auf alle Methoden Zugriff haben willst, könntest Du ein Interface ABC definieren, das A, B und C extended und dann Deine Klasse das Interface ABC implementieren lassen.
Also bedeutet das Interface A durch Interface B erweitert wird und das Interface C das Interface B erweitert und ganz unten in der Vererbungshierarchie steht dann das Inteface ABC, welches das Interface C erweitert? habe ich das so richtig verstanden?
Also bedeutet das Interface A durch Interface B erweitert wird und das Interface C das Interface B erweitert und ganz unten in der Vererbungshierarchie steht dann das Inteface ABC, welches das Interface C erweitert? habe ich das so richtig verstanden?
Nein, das meinte ich nicht so. Ich meinte das hier:
Java:
public interface ABC extends A, B, C {
}
public class Testklasse implements ABC {
//hier finden irgendwelche Implementierungen der Methoden statt
}
ABC abc = new Testklasse();
// kommt ursprünglich aus Interface A, und wird durch ABC weitergereicht
abc.methode1();
abc.methode2();
// kommt ursprünglich aus Interface B, und wird durch ABC weitergereicht
abc.methode3();
abc.methode4();
// kommt ursprünglich aus Interface C, und wird durch ABC weitergereicht
abc.methode5();
abc.methode6();
Das schöne an Interfaces ist nämlich, dass eine Klasse/ein anderes Interface mehrfach Interfaces implementieren/extenden kann.
[EDIT]
Java:
public class Testklasse implements interface A, interface B, interface C
interface A refA = new Testklasse();
Dass diese beiden Zeilen nicht kompilieren, sollte man übrigens auch ohne IDE oder Testtool sehen. Ein Mindestmaß an Syntaxregeln für Java sollte man auswendig wissen
[/EDIT]