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.
Deklarationen in abstrakten Klassen und Interfaces
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
abstract class Example
{
public String hallo="hi";
private String ciao ="bb";
protected abstract String getCurrentPackage();
public abstract void addition(int x, int y); /* Die IDE würde dir bei private sagen: Abstrakte Methoden dürfen nur public/protected sein */
}
interface IExample
{
public String test ="abc"; /* ACHTUNG: hier steht eigentl: public final static String test="abc" */
public void hallo(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:
abstract class Animal
{
public abstract String getType();
public void doIdentify()
{
System.out.println("Ich bin ein " + getType());
}
}
class Dog extends Animal
{
@Override
public String getType()
{
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:
abstract class Basisklase
{
void fürAlleGleich() { mach was bestimmtes }
void auchFürAlleGleich() { mach was anderes bestimmtes }
abstract void wasSpezielles();
}
class ErsterErbender extends Basisklase
{
void wasSpezielles() // Konkrete Implementierung der methode
{
// Kann die nicht-abstrakten Methoden der abstrakten Basisklasse verwenden
fürAlleGleich();
auchFürAlleGleich();
}
}
class ZweiterErbender extends Basisklase
{
void wasSpezielles() // Konkrete Implementierung der methode
{
// Kann die nicht-abstrakten Methoden der abstrakten Basisklasse verwenden
fürAlleGleich();
machWasWasNurDieZweiteKlasseMacht();
auchFürAlleGleich();
}
pvivate void machWasWasNurDieZweiteKlasseMacht() { ... }
}
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?