Statische Methoden in abstrakte Klassen deklarieren?

Status
Nicht offen für weitere Antworten.

sunnyfriday

Aktives Mitglied
Hallo Leute,

Habe eine Frage... wie kann ich eine statische Methode in eine abstrakte Klasse deklarieren? Geht das überhaupt??


Ich habe 3 Klassen. Type1, Type2, Type3.
Diese 3 Klassen MÜSSEN die Funktionen read(), write(), connect() implementieren. Die Implementierung ist für jeden Type verschieden. Daher habe ich diese Funktionen in eine abstrakte Klasse "Type" deklariert.

Die Methode connect() jedoch sollte aufrufbar sein auch ohne ein entsprechendes Objekt zu erzeugen.
Diese allerdings kann ich nicht als statische Methode deklarieren.
Kennt jemand ne Lösung?
Ist in diesem Fall auch ein bestimmtes Entwurfsmuster zu empfehlen. Wenn ja, welches??
Habe mit Entwurfsmustern wenig Erfahrung.

Gruß Tom
 
M

maki

Gast
Das Muster heisst Abstract Factory, und nein, eine Methode kann nicht abstract und static sein, beides geht nicht, wäre auch sinnfrei.
 
S

SlaterB

Gast
static != Vererbung,

wann immer du an Oberklassen/ Interface usw denkst, hat das nichts mit static zu tun,

du kannst aber eine einfache connect()-Methode per Vererbung handeln
und in bestimmten Klassen in diese Methode nur genau einen Aufruf einer statischen Methode schreiben,
falls das hilft,
 

Landei

Top Contributor
wie kann ich eine statische Methode in eine abstrakte Klasse deklarieren?

eine abstrakte Klasse kann ohne weiteres statische Methoden besitzen, aber du kannst sie nicht abstrakt machen (deklarieren ohne sie zu definieren)

Die Methode connect() jedoch sollte aufrufbar sein auch ohne ein entsprechendes Objekt zu erzeugen.

Dann muss connect() statisch sein. Punkt.

Statische Methoden folgen nicht dem normalen Schema mit überschreiben und so, und können deshalb auch nicht abstrakt deklariert (sondern nur definiert) werden.
 

sunnyfriday

Aktives Mitglied
Hallo,
danke für die schnelle Antworten.
Zu SlaterB: Meinst du, ich soll einfach die Methode erben, und dann in der entsprechenden Klasse überschreiben???
Habs nicht wirklich verstanden ;-)

du kannst aber eine einfache connect()-Methode per Vererbung handeln
und in bestimmten Klassen in diese Methode nur genau einen Aufruf einer statischen Methode schreiben,
falls das hilft,
 
S

SlaterB

Gast
> Meinst du, ich soll einfach die Methode erben, und dann in der entsprechenden Klasse überschreiben???

wie Methoden allgemein abstrakt definiert und dann überschrieben werden weißt du doch,
von read(), write() usw.

ich sage nur, dass du das genauso für connect() machen kannst,
und in den Unterklassen in den nun vererbten nichtstatischen connect()-Methoden jeweils irgendeine statische Methode aufrufst,

falls das hilft, worum es geht weiß ja niemand
 

sunnyfriday

Aktives Mitglied
Hallo,

Zu Landei:

Aber jeder Type muss die connect() Methode anders implementieren... Ich möchte halt nicht ein Object dieser Klassen erzeugen wenn ich nur die connect() Methode aufrufe.
 
S

SlaterB

Gast
ist ja auch ok, dann mache es nicht,

du musst nur verstehen, dass du für statische Methoden keine Vererbung hast,

abstrakte Klasse Type, Unterklassen XType, YType

nun kannst du gerne XType.connect() oder YType.connect() aufrufen,
aber nicht Type.connect() und dann soll entweder XType oder YType gemeint sein,
nach welchem Schema sollte das passieren?

bei Objekten ist es klar:
Type t = new XType();
t.read();
dann kann sich ja jeder denken, wie Java intern herausfindet, dass read() von XType gemeint ist,

aber für Klassen gibt es ja kein derartiges Konstrukt,
du kannst nicht
Type = XType; schreiben oder so,
 

sunnyfriday

Aktives Mitglied
Hallo SlaterB,

Ich dachte mir ein solches Konstrukt:

1: Verbindung zu XType(Physical) über Klasse XType.connect(). Wenn XType.connect() erfolgreich, dann weiter mit 2
2: Type type = new XType();
3. type.read() oder type.write();

Also. wenn XType.connect() nicht erfolgreich, dann brauche ich kein XType Objekt zu erzeugen.
Deswegen eine statische Methode.
Das mag vielleicht auch ne scheiß Lösung sein, aber da ich ein Anfänger bin dachte ich an so einer lösung.

gruß
 
S

SlaterB

Gast
also am Anfang ein XType.connect()-Aufruf, ok

aber wenn du direkt die Klasse XType angibst, wozu dann überhaupt über Vererbung nachdenken,
dann brauchst du die Methode gar nicht in Type 'irgendwie' definieren,

gut, man könnte sagen, dass Type vorschreiben soll, dass XType auch ja diese Methode implementiert,
aber das bringt hier doch wenig,

wenn sie nicht da ist, dann bekommst du beim Aufruf von XType.connect() direkt eine Fehlermeldung,

das andere ist ja Polymorphie,
unter Type type versteckt sich eine unbekannte Klasse, die bestimmte Methoden haben MUSS
 

sunnyfriday

Aktives Mitglied
Hallo SlaterB,

Das hört sich logisch an... Doch wie sage ich, dass XType die connect() haben MUSS?
Wie hättest du es gemacht??
Naja, ich will dich jetzt auch nicht weiter damit nerven...Ich werde dann wahrscheinlich doch immer ein Objekt erzeugen müssen.

Danke nochmals
 
S

SlaterB

Gast
> Doch wie sage ich, dass XType die connect() haben MUSS?


wie gesagt ist das nicht möglich
und eher auch nicht nötig, solange mit dem Aufruf XType.connect() im Quellcode direkt eine Rückmeldung kommt, falls die Methode fehlt
 
M

maki

Gast
sunnyfriday,

hast du dir nun die Abstract Factory angesehen, oder nicht?
 

Landei

Top Contributor
Das du keine Objekte instantiieren "darfst", deutet darauf hin, dass du in deiner Architektur ein Fehler hast. ich kann hier nur raten, was du eigentlich willst, aber es könnte sein, dass du sozusagen eine "parallele" Hierarchie für die connect() Methoden brauchst, also soetwas:

Code:
class A{}
class B{}

abstract class Connect() {
   abstract void connect();
   static Connect getConnect(Class clazz) {
      if (clazz == A.class) {
           return new ConnectA();
      } 
      if (clazz = B.class) {
           return new ConnectB();
      } 
   }
} 

class ConnectA extends Connect {
  void connect(){ /*do something */ }
}

class ConnectB extends Connect {
  void connect(){ /*do something */ }
}
 

sunnyfriday

Aktives Mitglied
Hallo maki,

Hab das Abstract Factory nur mal kurz angeschaut. Muss es später mal genauer unter die Lupe nehmen.

Danke übrigens
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
N Threads statische Methoden in Threads Allgemeine Java-Themen 5
D Wann sollte ich statische Methoden und Variablen benutzen? Allgemeine Java-Themen 44
S statische Methoden und Vererbung Allgemeine Java-Themen 6
M Wann Membermethoden, wann statische Utility-Methoden? Allgemeine Java-Themen 24
J Statische Methoden in Interfaces? Allgemeine Java-Themen 10
G Wann statische Methoden, statische Attributen? Allgemeine Java-Themen 7
G Statische Methoden erzwingen Allgemeine Java-Themen 2
temi Private statische Hilfsmethoden Allgemeine Java-Themen 33
T statische Variable und nicht-statische Methode Allgemeine Java-Themen 2
P "Overriden statische Methode" Statische Methode die vererbt wird Allgemeine Java-Themen 5
M Zeiger auf statische Variable Allgemeine Java-Themen 1
S Kapselung Statische Helper Klassen Allgemeine Java-Themen 5
C Classloading und statische Variablen Allgemeine Java-Themen 2
faetzminator statische Variablen in Interface - Vererbung? Allgemeine Java-Themen 9
J Statische Variablen, Threadübergreifend. Allgemeine Java-Themen 4
R Statische Klasse: Best practice mit flags (2) Allgemeine Java-Themen 3
N Klasse rausfinden, an der eine statische Methode aufgerufen wurde ? Allgemeine Java-Themen 10
R statische initialisierer Allgemeine Java-Themen 7
M Zwingen eine statische Methode zu importieren Allgemeine Java-Themen 5
heart_disease Designfrage: Statische Konfigurationsklasse Allgemeine Java-Themen 10
S statische Interfaces..? Allgemeine Java-Themen 6
S Innere Klassen und die statische Methode access$x Allgemeine Java-Themen 5
M Paralleler Zugriff auf statische Methode Allgemeine Java-Themen 5
F Statische Methode in abstrakter Superklasse definieren Allgemeine Java-Themen 4
B Statische Methode? Komisch. Allgemeine Java-Themen 5
H Zugriff auf statische Variable synchronisieren Allgemeine Java-Themen 4
A [SOLVED] Classpath und statische Variablen Allgemeine Java-Themen 6
S Tiefe Kopie einer Baumstruktur als statische Methode Allgemeine Java-Themen 8
M statische Methode per reflection aufrufen Allgemeine Java-Themen 2
M statische regex und vergleiche oder immer wieder compilen Allgemeine Java-Themen 2
S Statische Methode oder nicht? Allgemeine Java-Themen 5
T in einer statischen Methode ein nicht statische Aufrufen Allgemeine Java-Themen 5
D Statische, generische Methode will nicht. Allgemeine Java-Themen 2
H Zugriff auf statische Methode durch mehrere User Allgemeine Java-Themen 19
S Auf statische Funktionen mit Java Reflections zugreifen Allgemeine Java-Themen 3
B Leere vererbte Interface-Methoden Allgemeine Java-Themen 8
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
Encera Unterschied zweier "toString"-Methoden Allgemeine Java-Themen 1
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
B Arrays von Methoden möglich? Allgemeine Java-Themen 44
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
N abstracte klassen methoden Allgemeine Java-Themen 32
G Methoden für die Zukunft sinnvoll? Allgemeine Java-Themen 4
nonickatall Methoden Kann man Klassen/Methoden aus Variablen heraus aufrufen? Allgemeine Java-Themen 6
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
B Methoden Java Getter und Setter Methoden Allgemeine Java-Themen 9
Y Java Methoden unterschiedliche Zahlenreihen Allgemeine Java-Themen 2
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
F Sich automatisch aufrufende Java-Methoden Allgemeine Java-Themen 2
J Namen von Methoden über Reguläre Ausdrücke bearbeiten Allgemeine Java-Themen 6
D Methoden Methoden anpassen und fehlende Funktionen hinzufügen Allgemeine Java-Themen 475
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
R Statistische Methoden (Mathematik) Aufgabe Allgemeine Java-Themen 9
X Brüche kürzen mittels Methoden und ggT Allgemeine Java-Themen 15
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
L mehrere Methoden Allgemeine Java-Themen 19
KeexZDeveoper Zugriff auf Methoden vom Server Allgemeine Java-Themen 7
B StAX Parser - mehrere Methoden, ein XML Allgemeine Java-Themen 4
F Operationen/Methoden einen WebService im Browser mit Apache Axis aufrufen Allgemeine Java-Themen 4
A Automatisches Methoden Laufzeiten logging? Allgemeine Java-Themen 7
M Quellcode von Java-Methoden Allgemeine Java-Themen 9
N HashMap und Methoden richtig einbinden Allgemeine Java-Themen 2
R Variable durch mehrere Methoden ändern und nutzen Allgemeine Java-Themen 17
Q-bert Methoden Methoden in Java Allgemeine Java-Themen 13
D Methoden Java-Aufgabe Allgemeine Java-Themen 2
M Compiler-Fehler Methoden-Referenz Allgemeine Java-Themen 5
X Threads Externe Variablen in Run Methoden verändern Allgemeine Java-Themen 4
S 2 methoden mit gleichen namen und ein Interface Allgemeine Java-Themen 9
F Enum-werte als Methoden-Parameter übergeben Allgemeine Java-Themen 6
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
E OOP Objekte und Methoden Allgemeine Java-Themen 1
K Java ruft Methoden nicht der Reihe nach auf Allgemeine Java-Themen 14
N Methoden Methoden einer Klasse auf Grundlage eines Strings aufrufen Allgemeine Java-Themen 6
T Java Array in Methoden Allgemeine Java-Themen 1
D Code für bereitgestellte Methoden Allgemeine Java-Themen 1
P Entity Objekt Methoden vs Service methoden Allgemeine Java-Themen 2
R Signatur von Methoden in eine Datei schreiben? Allgemeine Java-Themen 4
A Methoden verändern Allgemeine Java-Themen 12
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
J Best Practice Testen von protected Methoden Allgemeine Java-Themen 7
L Methoden "Schiffe versenken" Quellcode in Methoden umwandeln Allgemeine Java-Themen 6
G Matrix reduzieren zwei Methoden Allgemeine Java-Themen 2
Sogomn Best Practice "Doppelte" Methoden Allgemeine Java-Themen 3
Paul15 String Methoden Allgemeine Java-Themen 7
G Methoden BMI -Wert Aufgabe(Methoden) Allgemeine Java-Themen 4
F Testen von Methoden Allgemeine Java-Themen 3
S "Vererben" statischer Felder/Methoden Allgemeine Java-Themen 4
F Methoden in der Enumeration Klasse Allgemeine Java-Themen 1
S Methoden ohne Methodenkopf ?! Allgemeine Java-Themen 5
T Überschreiben von Methoden Allgemeine Java-Themen 6
M Methoden werden in falscher Reihenfolge bearbeitet Allgemeine Java-Themen 10
S Methoden Methoden überschreiben Allgemeine Java-Themen 3
O Java-Obfuscator, welcher einzelne Methoden, Klassen und Ordnerstrukturen ausnehmen kann. Allgemeine Java-Themen 1
A also definition von klassen und string methoden und algorithmik Allgemeine Java-Themen 13
X Eigene Annotation - mit Bedingung für ganze Klassen oder Methoden Allgemeine Java-Themen 2
A Threads Lock über mehrere Abschnitte in verschiedenen Methoden Allgemeine Java-Themen 5
S Methoden Frage Allgemeine Java-Themen 2
R Wie kann man diese Methoden in arrays etablieren? Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben