packages, jars - Verstaendnisfrage

Status
Nicht offen für weitere Antworten.

Corcovado

Bekanntes Mitglied
Hallo,
kann mir mal jemand erklaeren wozu es in Java Packages, jars usw gibt? Warum so viele unterschiedliche Niveaus der Verkapselung? Wann packe ich Klassen in ein Package und v.a. warum? Was sind jars eigentlich genau und wozu sind die gut???


Mir ist klar, dass es was ziemlich grundlegendes ist. Aber als Java-Anfaenger habe ich vielleicht noch etwas Narrenfreiheit und kann mir zwar das "Oh Gott, lass Hirn... !" beim lesen dieser Frage vorstellen, hoffe aber trotzdem noch auf erklaeraende Antworten. Danke !
 

DTR

Bekanntes Mitglied
Hallo,

also packages sollen inhaltlich zusammenhängende Klassen zusammenfassen. Z.B. kann man alle Klassen, die für die Oberfläche zuständig sind in ein Package, die Datenstruktur in ein anderes und die Logik in ein drittes Package, oder so ähnlich. Sie sind also dafür da um Ordnung in seine Klassen zu bekommen.

Nun zu den jars. Diese sind hauptsächlich dafür da um Programme zusammenzuhalten, wenn sie fertig entwickelt sind. Ist das Programm fertig geschrieben, packt man alle Klassen in ein jar und kann dieses dann ausleifern. Besteht das ganze aus mehreren Unterprogrammen, kann man diese auch in mehrere jars packen un das ganze zusammen ausführen.
 

Corcovado

Bekanntes Mitglied
Danke hm - so is das also ???:L

Danke - und wozu gibts eigentlich Interfaces UND abstrakte Klassen? Wozu und wann benutze ich Interfaces und wann schreibe ich eine Abstrakte Klasse.Irgendwie sieht das fuer mich wie ein und dasselbe auf verschiedene Weise formuliert aus?
Ich kann beides nicht instanziieren und kann mit beidem "Konventionen" oder besser Vorgaben geben, die implementiert werden muessen ODER koennen ?! Was aber auch der einzigste Unterschied ist fuer mich ??
 
G

Gesicht

Gast
Ein Interface ist eine abstrakte Klasse. Mit dieser kann man mehrfach - Vererbung realisieren.
Da eine Klasse von beliebig vielen Interfaces erben kann. Allerdings muss diese Klasse alle Methoden,
die im Interface deklariert sind dann überschreiben. Denn im Interface sind alle Methoden ja ohne Rumpf,
also ohne Inhalt.

Für dich selber Interfaces zu erstellen, bringt dir zu Beginn deiner Programmierlaufbahn nichts, Sie dienen
nur zur Strukturierung.

- Wenn du z.B. ein Interface "Fortbewegungsmittel" erstellst, in diesem erstellts du
die Methode "bewegen". Nun erstellst du eine Klasse Auto und eine Flugzeug. Beide implementieren
das Interface Fortbewegungsmittel und müssen die Methode "bewegen" überschreiben. Das Auto fährt
Flugzeug fliegt. Das Interface bringt dir also nur, dass man sieht, dass die Klassen Auto und Flugzeug
etwas gemeinsam haben.

-Ein anderes Beispiel für die Verwendung wäre dann die Mehrfachvererbung.

Also ich als Programmierer brauche eigene Interfaces nicht, ich benutze nur die, die von Sun
schon bereitgestellt werden, und die sind sehr wichtig: z.B. alle Listener-Intefaces um Maus-oder
Tastatur-Ereignisse abzufangen.

Alles gut?
 

Corcovado

Bekanntes Mitglied
tja noch nich ganz. Also erstmal die Auskunft ist sehr aufschlussreich und kommt bei der Erklaerung des Prinzips fuer mich ziemlich auf den Punkt. Aber genau da habe ich meine Fragen:

- Mehrfachvererbung gibts in Java nicht, ich denke das liegt wohl hauptsaechlich, am Umgehen tueckischer Namenskonflikte (Bsp C++) und bringt strukturelle Einfachheit und somit bessere Uberschaubarkeit, Planbarkeit und erhoeht somit die Effizienz (wie mir bei Java sehr oft auffaellt, das stilistische Regeln in C++, nun in Java zu festen Sprachregeln geworden sind). Wozu dann aber wieder der Umweg ueber Interfaces? Warum nicht die Mehrfachvererbung etwas einschraenken? Warum diese Sonderklasse der Inferfaces und warum der Zwang (= sprich wozu dieser Unterschied zu abst. Klassen) Methoden (auch wenn ich sie nicht brauche) implementieren zu muessen - ist fuer mich nicht wirklich logisch?

- Das Bsp mit dem Fortbewegungsmittel kann ich doch genauso als abst. Klasse implementieren? Was bringt mir da 'n Interface? Ich sehe ja ein, dass man es so machen kann (und in Java wohl auch so macht) aber fuer mich is das dasselbe wie ne abst. Klasse in gruen. (Wobei ich jedoch bei den abst. Klassen irgendwie mehr Vorteile sehe.)

- Naja die Listener-Sachen, das is wohl ein Grund. Wenn SUN in seinen Containern, die Dinge eben nur als Interface zur Verfuegung stellt, gehts nich anders... :roll:

Ich finde ja im allg. Java schon sehr komfortabe, zwar eine unueberschaubare Menge an Funktionen fuer den Anfang aber man kommt sehr schnell rein und v.a. die Kompatibilitaet ist spitze.
 
G

Gesicht

Gast
Du sagst man solle doch die Mehrfachvererbung ein wenig einschränken,
genau dass hat man ja durch die Interface-Lösung gemacht.

Der Unterschied ist z.B. Klasse A und B sind beide abstrakte Klassen,
dann kannst du nicht sagen

Class c extends A,B

und auch nicht

Class c implements A,B

um das zu machen müssten A und B interfaces sein.
Der Quellcode der beiden Klassen wäre identisch, nur das einmal ganz oben
public interface

und einmal

public abstract class

steht.
Wie gesagt ein Interface musst du bei mehrfachvererbung nehmen.
Eine Abstrakte Klasse würdest du in dem vorigen Beispiel nehmen,
die Klasse "Fortbewegungsmittel".
Warum keine normale Klasse: weil ich nicht will, das man von der Klasse
"Fortbewegungsmittel" Objekte erstellen kann, weil es auch unlogisch ist,
deshalb mache ich Sie als abstrakt.

Also wenn du nur verhindern willst, dann von einer Klasse Objekte erstellt dann mache
Sie abstrakt, wenn du mehrfachvererbung willst nimm ein interface.

Vom Quellcode sieht beides gleich aus.
Ich denke länger sollte uns dieses Problem nun auch nicht mehr aufhalten.
Hoffe es war :idea: und nicht :bahnhof:
 

clemensk

Mitglied
Corcovado hat gesagt.:
Warum diese Sonderklasse der Inferfaces und warum der Zwang (= sprich wozu dieser Unterschied zu abst. Klassen) Methoden (auch wenn ich sie nicht brauche) implementieren zu muessen - ist fuer mich nicht wirklich logisch?

vorsicht!
alle interface-methoden müssen implementiert werden, das ist richtig!
aber auch alle abstrakten methoden einer abstrakten klasse! wenn du die nicht beim vererben überschreibst, wirst du probleme bekommen

interfaces sind eigentlich eine sehr gute lösung für die mehrfachvererbungsproblematik! wie schon erwähnt wurde - in c++ gabs große namensprobleme, grad bei einer karovererbung (b und c erben von a, d erbt von b und c) ... in java-interfaces stehen nur nicht-implementierte methoden und konstanten -> kein speicherwirrwarr

wenn du die generelle frage "wozu interfaces" stellst, dann muss die antwort sein: weil sie das objektorientierte prinzip stützen! ;)
 

Corcovado

Bekanntes Mitglied
@das Gesicht, ich meint ja die Fortbewegungsklasse einfach nur als "abstrakte Klasse" und halt eben nicht als Interface,aber ich glaube wir meinen dasselbe.

OK, ich denke die Fragen dazu sind (erstmal) geklaert. ;)
Dank !
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Packages erstellen Java Basics - Anfänger-Themen 7
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
M Packages erstellen mit Java-Editor Java Basics - Anfänger-Themen 6
C Probleme mit dem Erstellen und Importieren von Packages Java Basics - Anfänger-Themen 6
A Exceptions und Packages Java Basics - Anfänger-Themen 6
M Probleme beim verwenden von Packages Java Basics - Anfänger-Themen 6
Mxxxt Übersicht Java-Packages Java Basics - Anfänger-Themen 3
D Zusätzliche Packages benutzen? Java Basics - Anfänger-Themen 6
C Java Packages Konvention Namensvergabe Java Basics - Anfänger-Themen 3
B eclipse und packages weiterentwickeln Java Basics - Anfänger-Themen 5
B Compiler-Fehler Packages fehlen? Java Basics - Anfänger-Themen 5
J Eclipse + Java + Packages importieren Java Basics - Anfänger-Themen 7
J eigene packages bzw klassen verwenden Java Basics - Anfänger-Themen 25
S Richtlinien wie man Classen in Packages organisieren soll? Java Basics - Anfänger-Themen 3
G Packages -> was bringen sie? Java Basics - Anfänger-Themen 4
V Java Packages Java Basics - Anfänger-Themen 4
O Funktionen dateiübergreifend mit Packages Java Basics - Anfänger-Themen 6
J Zugriff auf Variable vom typ (default) durch Importieren des Packages? Java Basics - Anfänger-Themen 5
D Javadoc für Packages oder ganze Projekte Java Basics - Anfänger-Themen 5
U Zugriff auf andere Packages Java Basics - Anfänger-Themen 10
S Problem mit Packages Java Basics - Anfänger-Themen 9
C Klassen Main-Routine in Packages? Java Basics - Anfänger-Themen 7
L Konsole und packages Java Basics - Anfänger-Themen 8
B Packages in Eclipse umbennen Java Basics - Anfänger-Themen 12
V Packages: Cannot find symbol Java Basics - Anfänger-Themen 12
Blindxantos Klassen in verschiedene Packages unterteilen Java Basics - Anfänger-Themen 2
B Wie funktioniert der Import von Dritt-packages in Eclipse? Java Basics - Anfänger-Themen 5
K Collections Problem beim import von Packages Java Basics - Anfänger-Themen 10
M Tief verschachtelte Packages Java Basics - Anfänger-Themen 7
Z CLASSPATH + Packages Java Basics - Anfänger-Themen 6
N packages und finden von Klassen Java Basics - Anfänger-Themen 2
J Packages in Jar-Datei Java Basics - Anfänger-Themen 7
D Packages verwenden und in eigenes Projekt integrieren Java Basics - Anfänger-Themen 3
S Anfängerproblem mit Packages Java Basics - Anfänger-Themen 4
J Anfängerfrage zu Grundlagen von Packages Java Basics - Anfänger-Themen 7
B Unterklassen, Packages Java Basics - Anfänger-Themen 3
F Dateipfade mit Packages Java Basics - Anfänger-Themen 7
R mit klassen-instanzen arbeiten in packages Java Basics - Anfänger-Themen 10
F OOP Wrapper ermöglicht Zugriff für andere Packages? Java Basics - Anfänger-Themen 6
T Javac und Packages Java Basics - Anfänger-Themen 4
B Fragen zur Initialisierung/Zuweisung der Variable + Packages erstellen Java Basics - Anfänger-Themen 4
braindump Packages in verschiedenen Unterverzeichnissen Java Basics - Anfänger-Themen 3
G Verschiedene Packages Java Basics - Anfänger-Themen 3
R wo befinden sich die packages? Java Basics - Anfänger-Themen 5
S 2 Packages Java Basics - Anfänger-Themen 14
D packages importieren Java Basics - Anfänger-Themen 3
I Frage zu Packages Java Basics - Anfänger-Themen 19
T Anagram Game - warum ist es auf 2 Packages aufgeteilt? Java Basics - Anfänger-Themen 3
S problem mit packages Java Basics - Anfänger-Themen 7
G Konventionen für die Bezeichnung von Packages Java Basics - Anfänger-Themen 4
M problem mit packages Java Basics - Anfänger-Themen 5
D Packages mit Wizard erstellen Java Basics - Anfänger-Themen 2
S Woher Packages bekommen? Wie installieren? (Netbeans) Java Basics - Anfänger-Themen 4
B Packages einfach kopieren? Java Basics - Anfänger-Themen 13
B Fehler beim einbinden eines Packages Java Basics - Anfänger-Themen 6
G Aufgabe mit Packages Java Basics - Anfänger-Themen 3
G erstes Arbeiten mit Packages Java Basics - Anfänger-Themen 2
H javac mit meheren packages Java Basics - Anfänger-Themen 2
G Aus package auf andere eigene packages zugreifen? Java Basics - Anfänger-Themen 7
E import Anweisung und Packages Java Basics - Anfänger-Themen 3
F Pfadfrage in Packages und jar-Archiven Java Basics - Anfänger-Themen 3
P packages verwenden Java Basics - Anfänger-Themen 3
M Variabelzugriff auf fremde Packages Java Basics - Anfänger-Themen 5
D Probleme nach Einbindung einens neuen Packages Java Basics - Anfänger-Themen 5
T Packages erstellen und importieren? Java Basics - Anfänger-Themen 10
D Packages Java Basics - Anfänger-Themen 3
T Verständnisproblem packages/import Java Basics - Anfänger-Themen 9
P wohin muss ich die packages kopieren? Java Basics - Anfänger-Themen 12
T Erstellen eigener packages Java Basics - Anfänger-Themen 6
H Packages in JAR-Datei einbinden Java Basics - Anfänger-Themen 10
S Importieren in Packages Java Basics - Anfänger-Themen 11
L Problem mit Packages Java Basics - Anfänger-Themen 5
L Eigene Packages importieren Java Basics - Anfänger-Themen 2
N Packages definieren bzw. zum Classpath hinzufügen Java Basics - Anfänger-Themen 4
A Packages und Vererbung Java Basics - Anfänger-Themen 5
S Packages verwenden Java Basics - Anfänger-Themen 7
T Nerv! Packages und Classpath Java Basics - Anfänger-Themen 2
H probleme mit import von eigenen packages Java Basics - Anfänger-Themen 4
C Packages... Java Basics - Anfänger-Themen 7
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
J Muss ich die externen jars mitgeben? Java Basics - Anfänger-Themen 8
L Mehrere Jars im Unterordner Java Basics - Anfänger-Themen 2
P Maven und eigene Jars Java Basics - Anfänger-Themen 4
S Classpath: Alle .jars innerhalb eines Ordners einbinden Java Basics - Anfänger-Themen 4
M externe JARs in die eigene JAR einbinden Java Basics - Anfänger-Themen 9
A JApplet: einbinden von weiteren Jars macht Probleme Java Basics - Anfänger-Themen 2
B JAR mit externen JARs in eclipse erstellen Java Basics - Anfänger-Themen 5
S Erste Schritte Wo steht eigentlich das ein jar keine andere jars enthalten darf? Java Basics - Anfänger-Themen 19
J Frage zu jars/classpath Java Basics - Anfänger-Themen 7
M jars Java Basics - Anfänger-Themen 3
M Programm auf mehrere JARs verteilen Java Basics - Anfänger-Themen 17
P externe JARs integrieren Java Basics - Anfänger-Themen 9
R Applet mit 2 jars von 2 domains..? Java Basics - Anfänger-Themen 14
A relative Pfadangabe in jars Java Basics - Anfänger-Themen 2
N aus .txt innerhalb eines JARs Zeilenweise lesen Java Basics - Anfänger-Themen 8
X Der Name des jars finden? Java Basics - Anfänger-Themen 8
alexpetri jars aufräumen (FATJar) Java Basics - Anfänger-Themen 2
G pfad des jars Java Basics - Anfänger-Themen 2
S per Kommandozeile compilieren: Problem: externe Jars einbind Java Basics - Anfänger-Themen 16
L Klassen in JARs laden Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben