Hallo, ich habe ein paar Probleme beim Lösen folgender Aufgabe, ich hoffe ihr könnt mir helfen:
a) Schreiben Sie eine Klasse Buch. Die Klasse Buch enthält die privaten Attribute autor, titel und genre vom Datentyp String sowie das private Attribut
lfdNr (laufende Nummer) vom Datentyp Integer.
b) Schreiben Sie für jedes der Attribute eine get-Methode. Die Klasse Buch
enthält keine set-Methoden.
Ich hab so angefangen, jedoch bekomme ich mehrere Fehlermeldungen ‚missing method body‘ und oben bei der Deklaration steht ‚illegal start of expression‘
private bedeutet das die Variable nur innerhalb der Klasse benutzt werden darf. Möchte eine andere Klasse von Außen auf die Variablen zugreifen, brauchst Du ebend get- und set-Methoden. Get zum Lesen, Set zum schreiben. Das entspricht der Java Coding Convention ist „guter Style“. Das Selbe würdest Du erreichen wenn Du die Variablen statt private einfach public deklarieren würdest. Dann könntest Du direkt drauf zugreifen. Macht man aber nicht. beispiel
public String bla = Hello World;
in Klasse Buch. Dann könntest Du folgendes machen:
System.out.println(Buch.bla);
und
Buch.bla = Selber Hallo;
Mit get und set:
Buch buch = new Buch();
System.out.println(buch.getBla());
buch.setBla(„Selber Hallo“);
So und um Deine Frage zu beantworten: Würden die get- und set-Methoden auch private sein, dann könnten andere Klassen sie nicht benutzen und sie wären sinnlos.
Okay hab ich soweit, bloß bekomme ich oben bei der Deklaration bei dem String noch folgende Fehlermeldung ‚illegal start of expression‘ und ich weiß nicht wieso
public class Main {
public static void main (String[] args) {
private String autor, titel, genre;
private int lfdNr;
Okay, ich hab mir mal die Aufgabenstellung bei Dir genauer angeschaut. Da steht „schreiben Sie eine Klasse Buch“ - Du hast bisher eine Klasse Main.
Bei Dir muß es also losgehen mit
public class Buch
{
…
}
Dann kommen die Attribute und die get-Methoden - insgesamt sieht das dann so aus:
public class Buch
{
private String autor, titel, genre;
private int lfdNr;
public String getAutor()
{
return autor;
}
public String getTitle()
{
return titel;
}
public String getGenre()
{
return genre;
}
public int getldfNr()
{
return lfdNr;
}
}
und immer schön aufpassen, daß alle Klammern, die Du aufmachst, auch wieder geschlossen werden.
Die Klasse Buch kann man jetzt natürlich nicht allein ausführen (wie zb das bekannte „hello world“-Beispiel) - sie kann nur von anderen Klassen und Methoden verwendet werden.
Und nun zum Thema:
Also Deine Fehler sind folgende:
Du hast versucht die get-Methoden in die Main Methode also die statische zu schreiben, was so nicht wirklich geht.
Der zweite Fehler ist wieder ein syntax Fehler: Es fehlen die Klammern der einzelnen get-Methoden (siehe oben)
Zum Schluss: Die Klasse
public static void main(String[] args) {
// TODO Auto-generated method stub
}
Brauchst Du nicht, da diese nur für den Programmstart benutzt wird. Würd gerne mehr schreiben, bin aber gerade auf dem Sprung. Wenn Du noch fragen hast… Die Antwort könnte aber ne Weile dauern
Ja die Aufgabe hab ich jetzt soweit richtig.
jetzt muss ich noch folgendes machen:
Überschreiben Sie den Standardkonstruktor der Klasse Buch. Der „neue“
Konstruktor bekommt die Attribute der Klasse als Parameter übergeben. Die
Initialisierung der Attribute erfolgt innerhalb des Konstruktors.
Hab ich das soweit richtig gemacht?
public class buch {
private String autor, titel, genre;
private int lfdNr;
public buch(String autor, String titel, String genre) {
super();
}
beachte die Aufgabenstellung. Du sollst eine Klasse Buch schreiben, keine Methode. Du hast aber alles in die main-Methode geschrieben, welche nicht der richtige Ort ist.
Konnte ich dir damit weiterhelfen? Ich will ja nicht alles verraten
Ja die Aufgabe hab ich jetzt soweit richtig.
jetzt muss ich noch folgendes machen:
Überschreiben Sie den Standardkonstruktor der Klasse Buch. Der „neue“
Konstruktor bekommt die Attribute der Klasse als Parameter übergeben. Die
Initialisierung der Attribute erfolgt innerhalb des Konstruktors.
Hab ich das soweit richtig gemacht?
public class buch {
private String autor, titel, genre;
private int lfdNr;
public buch(String autor, String titel, String genre) {
super();
}