Archiv verlassen und diese Seite im Standarddesign anzeigen : Vererbung und so...
Servuz,
ich bin eigentlich in Sachen Programmieren, vor allem mit JAVA noch ein ziemlicher anfänger...
Ich habe jetzt gerade so angefangen mit Obj. Oritentierter Prog. und hab da ein kleenes problem mit meinen Oberklassen.
Und zwar hab findet der mir in der Unterklasse einfach die Klasse, die ich mit ...extends blablabla vererben will nich...
Also, das soll ne applikation werden, so ne art datenbank für fahrzeuge (*g* guat gell).
den Classpath hab ich auch gesetzt, auf alle möglichen ordner schon probiert, direkt aus dem bin raus, aber der findet die oberklasse und die ganzen variablen aus der einfach nich...
ich hoffe, dass ihr mir helfen könnt !
schonmal danke im voraus.
CYA
zuerst mal: gescheite IDE nehmen, dann wird das nämlich schonmal einfacher
www.intellij.com
zum problem: liegt am classpath, da haste schon recht
hast du ahnung von packages? ich denke, daran liegt's
wenn du eine klasse hast, die im package foo.bar.bla ist, dann wird die im unterverzeichnis foo/bar/bla/ gesucht
also beispiel:
oberklasse: OberClass im package bla und erbende klasse UnterClass ohn package sollte folgendermassen aussehen:
/projekt_verzeichnis/UnterClass.java
/projekt_verzeichnis/bla/OberClass.java
dann kannst so erben:
class UnterClass extends bla.OberClass {
....
}
bzw.
import bla.OberClass;
class UnterClass extends OberClass {
...
}
Man kann auch CodeGuide von Omnicore nehmen: http://www.omnicore.com/ :D ;) :) :p :cool: :eek:
Gruß
Chaq
Also, ich kopier euch am besten mal den Quellcode rein... Also wie gesagt, soll so ne art Autovermietung sein.
Die Klasse Auto soll ja auch im Package sein.
Hier die Klasse StrassenFzg:
package fahrzeug;
abstract class StrassenFzg
{
protected String bez;
protected short geschw;
protected boolean verliehen;
abstract boolean eingeben();
abstract boolean anzeigen();
public boolean verleihen()
{
if (verliehen)
return false;
else {
verliehen = true;
return true;
}
}
}
Und die Klasse Auto:
package fahrzeug
import java.io.*;
public class Auto extends StrassenFzg
{
public short plaetze;
public boolean eingeben()
{
InputStreamReader daten;
daten = new InputStreamReader System.in);
BufferedReader eingabe;
eingabe = new BufferedReader(daten);
try
{
System.out.print("Bezeichnung: ");
bez = eingabe.readLine();
System.out.print("Sitzplaetze: ");
plaetze = Short.parseShort(eingabe.readLine());
System.out.print("Geschwindigkeit: ");
geschw = Short.parseShort(eingabe.readLine());
return true;
}
catch (Exception e)
{
return false;
}
}
public boolean anzeigen()
{
System.out.println("\nDasAuto ist ein "+bez);
System.out.println("Es hat " +plaetze +" Sitze");
System.out.println("Top-Speed: " +geschw);
if (verliehen)
System.out.println("Es ist verliehen");
else
System.out.println("Es ist verfuegbar/nicht verliehen");
return true;
}
}
sieht eigentlich gut aus, liegen beide klassen auch in einem verzeichnis namens fahrzeug ?
ach muss das verzeichnis auch fahrzeug heißen ???
Also das hab ich jetzt auch gemacht. beide in das fahrzeugverzeichnis rein und den classpath auf das verzeichnis gesetzt.
dann sagt er mir aber, dass er keinen zugriff auf StrassenFzg bekommt.
Fehlermeldung:
auto.java:3: cannot access StrassenFzg
bad class file: f:\Java\fahrzeug\StrassenFzg.class
class file contains wrong class: fahrzeug.StrassenFzg
Please remove or make sure it appears in the correct subdirectory of the classpath.
public class Auto extends StrassenFzg
Und der nette pfeil zeigt auf das S von StrassenFzg.
Hab jetzt alles mal probiert, das in ein verzeichnis darunter kopiert usw. den classpath muss ich doch auf den Ordner fahrzeug setzen, oder ?
Hab windows2000, kann das sein, dass es daran liegt
(hab gehört, dass java ziemlich besch.... unter win2k ist...)
tweakyou
08.08.2002, 21:15
hi theone,
benutzt du eine IDE oder arbeitest du nur mit einem Editor?
Wenn nicht besorg dir mal (wie auch schon von MrEasy empfohlen) die IntelliJ IDE. Mit der Beta 3.0 kannst du super programmieren, muß halt ab und an einen neuen Key holen.
http://www.intellij.com/eap/
Dein Classpath muß au f:\Java zeigen, denn dein package zeigt auf fahrzeuge. Stell dir die package Struktur wie eine Verzeichnisstruktur vor.
Ich würde ein Verzeichnis scr für die Sourcefiles und ein Verzeichnis für die classes für die classfiles anlegen.
also Source = f:\Java\Fahrzeuge\scr
und Classes = f:\Java\Fahrzeuge\classes
Dein Source wäre dann in f:\Java\Fahrzeuge\scr\fahrzeuge
und deine classfiles in f:\Java\Fahrzeuge\classes\fahrzeuge
mit einem Batchfile kannst du das Programm starten
(ich gehe in dem Bsp. davon aus dass die Klasse auto die main Methode enthält)
SET JAVA_HOME=C\jdk1.3.1\jre
SET JAVA_EXE=%JAVA_HOME%\bin\java.exe
SET MAIN_CLASS_NAME=fahrzeuge.auto
SET JVM_ARGS=-ms16m -mx128m -Djdk.home="%JAVA_HOME%"
SET PATH=%JAVA_HOME%\bin;%PATH%
SET CLASS_PATH=%CLASS_PATH%;%JAVA_HOME%\lib\tools.jar
"%JAVA_EXE%" %JVM_ARGS% -cp "%CLASS_PATH%" %MAIN_CLASS_NAME%
stimme tweakyou voll und ganz zu, mit ausnahme, dass hier:
SET JAVA_HOME=C\jdk1.3.1\jre
ein doppelpunkt fehlt ;)
VIELEN DANK LEUTE !!!
Habs endlich hinbekommen...
hab den Classpath auf f:\Java zeigen lassen und dann
....extends fahrzeug.StrassenFzg
gemacht.
Nur die Batch file hab ich net so ganz kapiert, was die Java Args machen und so... und weiter unten blick ich au no net so ganz durch... ich kanns ja aber auch einfach mit java.exe ausführen, oder ?
Aber ich glaub so langsam habs auch ich kapiert wie das mit dem classpath funzt...
Dann könnte ich doch aber theoretisch auch
import fahrzeug.StrassenFzg
machen und dann nur
...extends StrassenFzg
oder ?
Original geschrieben von theone
...
Dann könnte ich doch aber theoretisch auch
import fahrzeug.StrassenFzg
machen und dann nur
...extends StrassenFzg
oder ? [/B]
korrekt
Isses eigentlich besser rein Textbasiert zu arbeiten für den Anfang, oder möglichst schnell dann auf JBuilder o.ä. umzusteigen ?
Oder bis wann isses besser im Editor zu arbeiten und ab wann wirds dann eher umständlich ?
tweakyou
10.08.2002, 20:01
hi,
also meines Erachtens ist das auch ein bischen Geschmackssache und zwar wie komplex deine GUI werden sollen. Ich habe mir für verschieden Projekttypen so eine Art Grundgerüste programmiert die ich immer wieder verwende. Wie schon öffters erwähnt programmiere ich mit der IntelliJ IDE diese hat kein grafisches Desingertool für GUIs, also alles handarbeit. Ich habe auch erfahrung mit dem JBuilder 4-7 und kann dir aus Erfahrung sagen dass du nicht einfach hergehen kannst, wie zB. bei VB, und dein GUI zeichnen und anschliessend mit ein bischen Code zu versehen und fertig, es bedarf schon einem erheblich Lernaufwand bis man effizient mit dem Designertool des JBuilders arbeiten kann. Der JBuilder zeigt seine Stärken beim Entwickeln vor allem im Bereich Client/Server und Datenbankanwendungen.
Am einfachsten erstellst du GUIs indem du sie zuerst mal auf Papier zeichnest und dann mit Hilfe von Panels und Layoutmanagern die Komponenten anordnest.
OK. VIELEN DANK LEUTE !
Werd mal ein paar IDEs und so ausprobieren und dann werd ich
- denk ich - schon auch selber irgendwie auf den geschmack kommen... :D
CYA
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.