1. Können Datenkomponenten in abstrakten Klassen sowohl, public, privat als auch protected deklariert werden?
2. Gilt das was für Datenkomponenten in abstrakten Klassen gilt auch für deren Methoden?
3. Dürfen abstrakte Methoden ein Parameterliste haben?
4. Können in Interfaces Datenkomponenten deklariert werden? Wenn ja, mit allen oben genannten Sichtbarkeitsstati?
5. Dürfen Methoden eines Interfaces eine Parameterliste haben?
Vielen Dank schon mal für Eure Hilfe, ich hab jetzt so viel gelesen, dass ich hier gerade beim Verständnis hänge ???:L
abstractclassExample{publicString hallo="hi";privateString ciao ="bb";protectedabstractStringgetCurrentPackage();publicabstractvoidaddition(int x,int y);/* Die IDE würde dir bei private sagen: Abstrakte Methoden dürfen nur public/protected sein */}interfaceIExample{publicString test ="abc";/* ACHTUNG: hier steht eigentl: public final static String test="abc" */publicvoidhallo(int test);}
1. Wenn du damit variablen/referenzen meinst: ja
2. Methoden können nur public/protected sein (bei Interfaces: nur public)
3. ja natürlich
4. nein nur public (afaik würde er aus : [c]int test=5; [/c] [c]public final static int test=5;[/c] machen) dazu
5. ja
Ouh ja hast, recht. Die stelle hätte ich mir nochmal durchlesen sollen vorher, ich editiers mal um.
Edit abstrakte Methoden werden erst später definiert:
Java:
abstractclassAnimal{publicabstractStringgetType();publicvoiddoIdentify(){System.out.println("Ich bin ein "+getType());}}classDogextendsAnimal{@OverridepublicStringgetType(){return"Hund";}}
Ok...also abstrakte Methoden dürfen sowohl als public also auch privat und protected deklariert sein und Methoden eines INterfaces müssen public sein?
Beide Arten von Methoden dürfen eine Parameterliste besitzen?
Und wenn ich es richtig verstanden habe, dürfen in abstrakten Klassen auch Methoden deklariert werden die nicht abtrakt sind. Welchen Vorteil hat das? Dürfen die dann überschrieben werden? Oder werden die nur vererbt?
Nicht-abstrakte Methoden in abstrakten Klassen können auch überschrieben werden. Man benutzt sie aber i.a. dann, wenn mehrere nicht-abstrakte Klassen von dieser abstrakten Klasse erben, und diese Methoden für alle erbenden Klassen gleich sind
Java:
abstractclassBasisklase{void fürAlleGleich(){ mach was bestimmtes }void auchFürAlleGleich(){ mach was anderes bestimmtes }abstractvoidwasSpezielles();}classErsterErbenderextendsBasisklase{voidwasSpezielles()// Konkrete Implementierung der methode{// Kann die nicht-abstrakten Methoden der abstrakten Basisklasse verwenden
fürAlleGleich();
auchFürAlleGleich();}}classZweiterErbenderextendsBasisklase{voidwasSpezielles()// Konkrete Implementierung der methode{// Kann die nicht-abstrakten Methoden der abstrakten Basisklasse verwenden
fürAlleGleich();machWasWasNurDieZweiteKlasseMacht();
auchFürAlleGleich();}
pvivate voidmachWasWasNurDieZweiteKlasseMacht(){...}}
Nein, abstrakte Methoden sind nur public oder protected. Methoden in abstrakten Klassen, die selbst nicht abstrakt sind, können alles sein.
Lässt sich übrigens auch logisch erklären, wenn man weiß, was private bedeutet. Auf private Methoden hat man in einer Kind-Klasse keinen Zugriff mehr. Aber abstrakte Klassen sind nur dazu da, überschrieben zu werden. Darum hat eine private abstrakte Klasse keinen Sinn.
und Methoden eines INterfaces müssen public sein?
Beide Arten von Methoden dürfen eine Parameterliste besitzen?