Ich werde net schlau aus java....

Bilbao

Wohlschmecker aus Vierlanden
Registriert
25.01.06
Beiträge
238
Hi Leute ich hab mal wieder ein Problem

Ich hab eine Klasse Auto mit einer methode drucken()

Ich hab eine Klasse Cabrio die von Auto erbt... auch mit einer methode drucken()

wenn ich jetzt aber ein Objekt der Klasse Cabrio erstelle und dann cabrio1.drucken() mache...
ruft er nicht die Cabrio drucken methode auf sonder aus irgendeinem Grund die Auto drucken methode...

Kann mir das einer erklären?

ich hänge mal die Dateien mit ran (da ist auch noch ne datei AutoUI die im endeffekt die main methode hat (fragt net warum das da alles ein wenig kompliziert geschrieben ist aber ich kanns net besser :p))
 

Anhänge

  • 01 Auto.zip
    9,5 KB · Aufrufe: 49

tfc

Ontario
Registriert
21.07.07
Beiträge
348
Das liegt am Tippfehler der Methode "drucken()" in Deiner Cabrio.java. Das war's schon. ;)
 

Bilbao

Wohlschmecker aus Vierlanden
Registriert
25.01.06
Beiträge
238
Wie ich sowas hasse da programmiert man programmiert man... und dann ist es sowas warum es nicht geht und man sieht so etwas bannales nicht mehr... trotzde vielen vielen dank
 

tfc

Ontario
Registriert
21.07.07
Beiträge
348
Programmierst Du mit einer IDE?

Ich persönlich mag zwar Texteditoren wie dem VI am liebsten zum Programmieren, aber ohne IDE-Funktionalitäten wie Autovervollständigung von Methoden- und Objektnamen und so weiter hätte ich auch schon öfters alt ausgesehen.

Probier doch mal Eclipse aus.
 

appahappa

Ingrid Marie
Registriert
28.03.07
Beiträge
273
Um solche Fehler zu vermeiden würde ich auch empfehlen die @Override Annotation zu verwenden. (ab Java 1.5)


also in der Klasse Cabrio:

@Override
public void drucken() {...}


Dann würdest du einen Compile-Fehler bekommen, wenn du dich vertippst.

@Override
public void durcken() {...}

wird gar nicht mehr kompilieren.

@Override gibt dem Compiler einen Hinweis, dass du eine Methode überschreiben willst. Wenn es in der Parent-Klasse (in deinem Fall Auto) keine Methode mit der gleichen Signatur gibt, wird deine Child-Klasse (Cabrio) nicht kompiliert.
 

Bilbao

Wohlschmecker aus Vierlanden
Registriert
25.01.06
Beiträge
238
das ist ja mal ein geiler tipp hehe danke :) werde es mir einprägen :) mit dem override


zum Thema IDE....
Ich habs mal mit Eclipse schon mal versucht... ich fands ein wenig überladen... Ich mag das nicht wenn tausend Sachen links und rechts neben dem Sourcecode sind das macht es irgendwann nicht mehr übersichtlich...
 

tfc

Ontario
Registriert
21.07.07
Beiträge
348
zum Thema IDE....
Ich habs mal mit Eclipse schon mal versucht... ich fands ein wenig überladen... Ich mag das nicht wenn tausend Sachen links und rechts neben dem Sourcecode sind das macht es irgendwann nicht mehr übersichtlich...

Hm...

Nun ja, entweder Du klickst die tausend Sachen links und Rechts weg, so dass Du nur noch das siehst was Du brauchst (Eclipse ist stark anpassbar) oder Du gewöhnst Dich dran.

Ich habe früher zum Programmieren nur ein paar Konsolenfenster benutzt. Aber auf der Arbeit hab ich dann an Projekten mitgearbeitet, in denen man mit über hundert eigens programmierten Klassen umgehen musste und dann kannste sowas wie "Übersicht" ohne eine IDE die Dir hilft, wirklich vergessen...

Dort ist das wirklich ein Segen, wenn Du den Namen eines Objekts eingibst, mit dem Du arbeiten willst, und die IDE Dir Funktionsnamen vorschlägt und Dir sogar sagt, was da für einzelne Parameter rein sollen. :)
 

appahappa

Ingrid Marie
Registriert
28.03.07
Beiträge
273
Ich würde sagen, dass einem einiges an Produktivität verloren geht, wenn man ohne eine gute IDE entwickelt. Alleine schon die ganzen Hinweise, die man bekommt sind Gold wert, Code completion usw. Und man vermeidet jede Menge Fehler. Auch ist es viel einfacher durch den Code zu navigieren. Wenn ich z.B. eine Methode irgendeiner Klasse aufrufe und mir diese Methode anschauen will, kann ich schnell dahin springen. Das ist wirklich wichtig, vor allem wenn man mit vielen Leuten an einem grösseren Projekt arbeitet und nicht alle Klassen und Methoden im Kopf hat.