Erben aus Überverzeichnis

Letavino

Aktives Mitglied
Hallo,

ich schreibe gerade ein größeres Programm mit einigen Klassen und Subklassen.
Bisher funktioniert alles, wie erwünscht.
Nun würde ich, für eine bessere Übersichtlichkeit, einige Klassen gerne in ein Package packen, nur leider scheint das so einfach nicht zu gehen, wenn die Superklasse im Überordner liegt.

Beziehungsweise
Java:
public class bus extends fahrzeuge
funktioniert so nicht, da er die Klasse fahrzeuge so nicht findet.

Beispiel:

Ordner: src/
Klassen: main.java, fahrzeuge.java, straßen.java

Ordner: src/fahrzeuge/
Klassen: transporter.java, bus.java, auto.java

Ordner: src/straßen/
Klassen: autobahn.java, feldweg.java

Wie kann ich so etwas realisieren, bzw. ist das so überhaupt sinnvoll?

Gruß, Letavino
 
C

Conventions

Gast
1) Klassen werden UpperCamelCase geschrieben ... sollte man nach 50 Posts mitlerweile wissen.
2) Schon mal was von [c]package[/c] und [c]import[/c] Anweisungen gehört ? Sollte man kennen wenn man was mit Paketen machen will.
 

hexx

Mitglied
Klassen aus dem default-package können nicht importiert werden. Du solltest generell alle Klassen innerhalb eine Pakethierarchie anordnen. Als Top-Level Paket bietet sich für dich der Programmname oder eine Abkürzung davon an:

Code:
src
└── myprog
    ├── fahrzeuge
    │** ├── Auto.java
    │** ├── Bus.java
    │** └── Transporter.java
    ├── straßen
    │** ├── Autobahn.java
    │** └── Feldweg.java
    ├── Straßen.java
    ├── Fahrzeuge.java
    └── Main.java

Und dann halt benötigte Klassen, die in anderen Paketen liegen, importieren.
 
T

Tomate_Salat

Gast
Und eine einzelne Klasse als Paket zu schnüren, um es importieren zu können, geht ja irgendwie am Sinn eines Paketes vorbei

Es geht auch nicht darum, jede Klasse in ein einzelnes Paket zu stecken. Aber ganz drauf verzichten ist auch schlecht (wie dein Fall ja zeigt). Damit du deine Klasse importieren kannst, muss diese eben in einem Paket liegen.

Als Top-Level Paket wird auch gerne folgendes schema verwendet:
[tld].[unternehmen]
[tld].[unternehmen].[produkt]

z.B.:
com.google
com.google.gson
 

Letavino

Aktives Mitglied
Es funktioniert nun, wie es soll.
Das Prinzip habe ich jetzt verstanden.

Auch dir noch mal vielen Dank für deine Erläuterung!

:)
 

faetzminator

Gesperrter Benutzer
Noch etwas: Natürlich sollte das Interface [c]Fahrzeug[/c] statt [c]Fahrzeuge[/c] oder [c]Strasse[/c] statt [c]Straßen[/c] heissen.
 

Ähnliche Java Themen

Neue Themen


Oben