Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
// Datei: Punkt.java
interface PunktSchnittstellen
{
public int getX(); // Eine Methode, um den x-Wert abzuholen
public void setX (int i);// Eine Methode, um den x-Wert zu setzen
}
public class Punkt implements PunktSchnittstellen
{
private int x; //x-Koordinate vom Typ int
public int getX() // Alle Methoden der Schnittstelle
{ // Punktschnittstellen müssen in der
return x; // Klasse implementiert werden, wenn die
} // Klasse instantiierbar werden soll.
public void setX (int i)
{
x = i;
}
public static void main (String[] args)
{
Punkt p = new Punkt(); // Hiermit wird ein Punkt erzeugt
p.setX (3);
System.out.println ("Die Koordinate des Punktes p ist: ");
System.out.println (p.getX());
}
}
Compiliere E:\BuchBegleitCD\Javabuch\CodeBeispiele\Kapitel_14\14.1_TrennungVonSpezifikationUndImplementierung\Punkt.java mit Java-Compiler
Punkt.java:3:1: error while writing PunktSchnittstellen: PunktSchnittstellen.class (Zugriff verweigert)
interface PunktSchnittstellen
^
1 error
Hä das ist ein Beispiel von einem Buch wie können die denn da ein falsches Beispiel rein tun? MIST!
Java:
// Datei: PunktSchnittstellen.java
public interface PunktSchnittstellen
{
public int getX(); // Eine Methode, um den x-Wert abzuholen
public void setX (int i);// Eine Methode, um den x-Wert zu setzen
}
public class PunktSchnittstellen implements PunktSchnittstellen
{
private int x; //x-Koordinate vom Typ int
public int getX() // Alle Methoden der Schnittstelle
{ // Punktschnittstellen müssen in der
return x; // Klasse implementiert werden, wenn die
} // Klasse instantiierbar werden soll.
public void setX (int i)
{
x = i;
}
public static void main (String[] args)
{
PunktSchnittstellen p = new PunktSchnittstellen(); // Hiermit wird ein PunktSchnittstellen erzeugt
p.setX (3);
System.out.println ("Die Koordinate des Punktes p ist: ");
System.out.println (p.getX());
}
}
Fehlermeldung:Compiliere C:\Dokumente und Einstellungen\Torben\Eigene Dateien\PunktSchnittstellen.java mit Java-Compiler
PunktSchnittstellen.java:9:8: duplicate class: PunktSchnittstellen
public class PunktSchnittstellen implements PunktSchnittstellen
^
1 error
Warum ist das falsch kann mir jemand mal den korrekten qellcode senden?
Mach ich funktioniert immer noch nciht. Kann mir mal jemand einfach den richtigen Qellcode senden? Weil solangsam denke ich das, dass nich vom Qellcode kommt sondern vom Computer.
Also im Klartext: Das Interface 'PunktSchnittstellen' darf nicht den gleichen Namen haben wie die Klasse 'PunktSchnittstellen'. Und ansonsten siehe nochmals L-ectron-X's Post:
L-ectron-X hat gesagt.:
Du musst die Klasse Punkt in einer eigenen Datei namens Punkt.java speichern.
Das Interface und die Klasse haben also voneinander verschiedene Namen und beide stehen jeweils in einer separaten .java-Datei, welche wiederum den Namen des Interface bzw. den Namen der Klasse haben? Gut, dann wäre eine Fehlermeldung nicht schlecht.
Compiliere C:\Dokumente und Einstellungen\Torben\Eigene Dateien\P.java mit Java-Compiler
P.java:9:8: duplicate class: P
public class P implements PunktSchnittstelln
^
1 error
Das ist die Fehlermeldung.
Java:
// Datei: P.java
interface P
{
public int getX(); // Eine Methode, um den x-Wert abzuholen
public void setX (int i);// Eine Methode, um den x-Wert zu setzen
}
public class P implements PunktSchnittstelln
{
private int x; //x-Koordinate vom Typ int
public int getX() // Alle Methoden der Schnittstelle
{ // Punktschnittstellen müssen in der
return x; // Klasse implementiert werden, wenn die
} // Klasse instantiierbar werden soll.
public void setX (int i)
{
x = i;
}
public static void main (String[] args)
{
P p = new P(); // Hiermit wird ein P erzeugt
p.setX (3);
System.out.println ("Die Koordinate des Punktes p ist: ");
System.out.println (p.getX());
}
}
Lies die Fehlermeldung: "duplicate class: P"
Der Name P wird für deine Klasse und die Schnittstelle verwendet. Das ist nicht möglich. Benenne eine der beiden um.
// Datei: P.java
interface P
{
public int getX(); // Eine Methode, um den x-Wert abzuholen
public void setX (int i);// Eine Methode, um den x-Wert zu setzen
}
public class s implements PunktSchnittstelln
{
private int x; //x-Koordinate vom Typ int
public int getX() // Alle Methoden der Schnittstelle
{ // Punktschnittstellen müssen in der
return x; // Klasse implementiert werden, wenn die
} // Klasse instantiierbar werden soll.
public void setX (int i)
{
x = i;
}
public static void main (String[] args)
{
P p = new P(); // Hiermit wird ein P erzeugt
p.setX (3);
System.out.println ("Die Koordinate des Punktes p ist: ");
System.out.println (p.getX());
}
}
Hab ich gemacht trotzdem macht er es nicht. Und eig. müsste das Anfangs Beispiel richtig sein. Weil es ein Beispiel von einem Buch ist.
Fehlermeldung:
Compiliere C:\Dokumente und Einstellungen\Torben\Eigene Dateien\P.java mit Java-Compiler
P.java:9:8: class s is public, should be declared in a file named s.java
public class s implements PunktSchnittstelln
^
P.java:9:27: cannot find symbol
symbol: class PunktSchnittstelln
public class s implements PunktSchnittstelln
^
P.java:25:13: P is abstract; cannot be instantiated
P p = new P(); // Hiermit wird ein P erzeugt
^
3 errors
Obwohl es eig. richtig sein müsste. Kann mir jemand bitte den richtigen Qellcode schicken?
1.: Interface Schnittstelle -> Dateiname: Schnittstelle.java
2.: Classe Punkt -> Dateiname: Punkt.java (So wie es der Javakompiler auch sagt, wenn du dir die Fehlermeldung mal ansiehst!
Wobei man aber auch sagen sollte das der Code im allerersten Beitrag korrekt ist, da es nicht verboten ist mehrere Klassen (bzw. Interfaces) innerhalb einer Datei zu speichern, solange nur genau 1 Klasse "public" ist. Offenbar hat die 1. gepostete Fehlermeldung:
Punkt.java:3:1: error while writing PunktSchnittstellen: PunktSchnittstellen.class (Zugriff verweigert)
etwas mit unzureichenden Zugriffsrechten zu tun. Womöglich ist ein (evtl. angegebener) Dateipfad nicht vorhanden oder ein Ordner ist schreibgeschützt. Dennoch ist es meiner Meinung nach ein besserer Stil und übersichtlicher, wenn man pro Datei nur eine Klasse speichert.
Ja die Ordner auf der CD sind schreibgeschützt daran wird es wohl liegen. Obwohl das auch nicht sein kann, weil andere Programme von der schreibgeschützten CD funktionieren. Mmh... so jettzt hab ich den Qellcode falsch geändert. Kann mir aber bitte jemand was zu dem oben richtig geposteten Qellcode etwas sagen?
Falsch geändert würde ich nicht sagen. Wenn du meinen Beitrag mit einbeziehst passt wieder alles....
Hatte mich auch schon gefragt was beim ersten Beispiel falsch ist, aber hatte die Fehlermeldung nicht wirklich gelesen
Lösung des Problems ist dann ganz einfach, den oberen Quelltext (also die Source-Datei) auf Festplatte zu kopieren und dann zu kompilieren. Wenn du das tust wirst du feststellen dass im gleichen Ordner zwei .class Dateien entstehen (also die kompilierte Source). Wenn du das auf ner CD versuchst klappt es natürlich nicht, da eine CD ja schreibgeschützt ist....