private Klassenvariablen

zAokiji

Mitglied
Hi Leute ich bin gerade beim Lernen und bin grade an dem Beispiel "private Klassenvariable mit get und set. Ich versuche ein Objekt Rechteck zu erzeugen, was leider nicht funktioniert. Im Buch wir dies leider nicht genau erklärt bei mir sind nun ein paar Fehler vorhanden die ich nicht wegbekomme. Dake für die Hilfe. LG
 

Anhänge

  • Rechteck..PNG
    Rechteck..PNG
    98,7 KB · Aufrufe: 112
  • Reckteck.PNG
    Reckteck.PNG
    107,3 KB · Aufrufe: 101

Robat

Top Contributor
Als erstes: Code bitte nicht als Bild sondern in Code-Tags [code=Java]Dein Code[/code] posten. Dann kann man ihn besser zitieren / lesen :)

Zu deinem Problem:
Du hast in der Klasse Rechteck einen Konstruktor mit 2 Parametern angelegt. Rechteck(double laenge, double breite). Beim erzeugen eines Rechteck-Objektes musst du also auch im Konstruktor 2 Argumente mitgeben.
Java:
int laenge = 200;
int breite = 400;
Rechteck r1 = new Rechteck(laenge, breite);
Das gleiche gilt quasi für deine Setter-Methoden. Deine Setter bekommen jeweils einen Parameter, den du zwischen den () - Klammern angeben musst. Du kannst hier nicht mit dem Zuweisungsoperator (=) arbeiten.
Java:
r1.setLaenge(500);
 

zAokiji

Mitglied
Hi danke für den Hinweis, werde in Zukunft den Code so posten.
Danke das mit den Setter-Methoden mach sinn (funktioniert nun auch bei mir).
Es macht auch Sinn, dass ich dem Konstruktor die zwei Argumente mitgeben muss. Ich habe jedoch nicht verstanden warum ich nicht einfach reicht zwei Integer zu deklarieren.
Java:
int laenge;
int breite;
Wenn ich es wie oben deklariere bekomme ich eine Fehlermeldung, nicht jedoch wenn ich sie mit 200 und 400 initialisiere.
Die int Variablen muss ich in der Main nochmals deklarieren?
Muss ich Sie mit Null initialisieren oder gibt es noch einen anderen Weg es nicht in der Main zu machen?
Java:
public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int laenge = 200;
        int breite = 400;
        Rechteck r1 = new Rechteck(laenge, breite);
        //breite = r1.setBreite(breite);
       
       
        r1.setLaenge(zahlenEingabe(scan, "Bitte geben Sie die Länge ein: "));
        r1.setBreite(zahlenEingabe(scan, "Bitte geben Sie die Breite ein: "));
        scan.close();
       
        System.out.println("Fläche: " + r1.berechneFlaeche());
        System.out.println("Umfang: " + r1.berechneUmfang());
       
    }
Danke. LG
 

Robat

Top Contributor
Wenn ich es wie oben deklariere bekomme ich eine Fehlermeldung, nicht jedoch wenn ich sie mit 200 und 400 initialisiere.
Du sagst es schon selber. Du musst die Variablen initialisieren, ergo einen Wert zuweisen. Wenn du die Variablen dem Konstruktor übergibt werden die Werte genommen und eine Kopie der Werte in den Konstruktor übergeben. Wenn diese keinen Wert haben, weil du sie nicht initialisierst, kommt ein Fehler.

Die int Variablen muss ich in der Main nochmals deklarieren?
Nicht nochmals. Die beiden Variablen haben nichts mit den aus der Klasse Rechteck zu tun. Du musst sie auch nicht anlegen sondern kannst die Werte direkt übergeben:
Java:
Rechteck r = new Rechteck(200, 300);
Muss ich Sie mit Null initialisieren oder gibt es noch einen anderen Weg es nicht in der Main zu machen?
int ist ein primitiver Datentyp und kein Objekt. Daher kann es nicht null werden sondern wird mit einem default Wert (0) initialisiert.
 

zAokiji

Mitglied
Passt danke bin noch neu im Objektorientiert, deshalb ist es für mich oft noch ein bisschen schwer.
Ok die int müssen initialisiert werden. Ich übergeben im Moment 1 und 1 als default Wert, da wenn ich zwei mal 0 übergebe wirft mir der Compiler eine Exception (siehe ganz 2.ten Code teil). Würde der Code so passen oder was gibt es auch der Sicht eines Erfahrenen noch zu verbessern

1.
Java:
public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //int laenge = 200;
        //int breite = 400;
        Rechteck r1 = new Rechteck(1, 1);
        //breite = r1.setBreite(breite);

2.
Java:
//Konstruktor
    public Rechteck(double laenge, double breite) {
        setLaenge(laenge);
        setBreite(breite);
    }
    //Getter und Setter für Lange
    public double getLaenge() {
        return laenge;
    }
    public void setLaenge(double laenge) {
        if(laenge<=0)
            throw new IllegalArgumentException("Die Länge muss größer als Null sein!");
        this.laenge = laenge;
    }
[/java]
Danke.LG
 

Blender3D

Top Contributor

mihe7

Top Contributor
wirft mir der Compiler eine Exception
Dein Programm wirft die Exception zur Laufzeit. Das hat nichts mit dem Compiler zu tun.

Nicht gut ist es, im Konstruktor einer erweiterbaren Klasse direkt oder indirekt überschreibbare Methoden zu verwenden.

In Deiner main-Methode musst Du nicht erst ein Rechteck mit irgendwelchen Default-Werten erzeugen. Stattdessen kannst Du die vom Scanner erhaltenen Werte einfach in Variablen zwischenspeichern und anschließend mit diesen Variablen das Rechteck erstellen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Klassenvariablen standardmäßig private oder public? Java Basics - Anfänger-Themen 2
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
M Private Variable Java Basics - Anfänger-Themen 2
Gaudimagspam Attribute einfügen private Java Basics - Anfänger-Themen 3
N JUnit und private Methoden testen. Java Basics - Anfänger-Themen 9
S Private int in Klasse Java Basics - Anfänger-Themen 4
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
J Klasse wird als private erkannt obwohl sie public deklariert ist Java Basics - Anfänger-Themen 3
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
shiroX Klassen Klasse/Methode private final jUnit-Fehler Java Basics - Anfänger-Themen 5
N Instanzvariablen als private... Java Basics - Anfänger-Themen 2
A Private Attribut aus fremder Klasse lesen ? Java Basics - Anfänger-Themen 19
P Methoden private int[] in main Java Basics - Anfänger-Themen 16
A Klassen Werte in den private Bereich übergeben Java Basics - Anfänger-Themen 5
C Collections: private Map Java Basics - Anfänger-Themen 4
M Wie private Methoden mit Asserstions testen? Java Basics - Anfänger-Themen 3
M Verständnisfrage zu JUnit Tests und private Methoden Java Basics - Anfänger-Themen 3
W private Array Loops Java Basics - Anfänger-Themen 4
B public/private nur 1x schreiben Java Basics - Anfänger-Themen 3
H Privat ist nicht mehr private Java Basics - Anfänger-Themen 7
J Vererbung Zugriff auf private Variable Java Basics - Anfänger-Themen 10
A Variablen lokale Variable als private? Java Basics - Anfänger-Themen 3
A private string array Java Basics - Anfänger-Themen 5
B auf private Variable durch eine Methode zugreifen Java Basics - Anfänger-Themen 8
J Probleme mit verschiedenen Private Klassen Java Basics - Anfänger-Themen 3
T public-private problem Java Basics - Anfänger-Themen 5
C Comparator und private Variablen Java Basics - Anfänger-Themen 7
K Methoden als private deklarieren? Java Basics - Anfänger-Themen 13
K Protected und Private Deklaration Java Basics - Anfänger-Themen 8
F Im Konstruktor mit Settern auf private Attribute zugreifen - oder nicht? Java Basics - Anfänger-Themen 18
B Kapselung Klasse private, Konstruktor protected Java Basics - Anfänger-Themen 10
H NEtBeans: Fehler: XXX has private access... Java Basics - Anfänger-Themen 2
K Kapselung public / private verständis problem Java Basics - Anfänger-Themen 17
E einfache Frage zu private Java Basics - Anfänger-Themen 26
N public class -> public method -> variable private? Java Basics - Anfänger-Themen 10
W Private Methode variablen übergeben..?! WIE! Java Basics - Anfänger-Themen 30
K OOP Datenkapselung mittels private - length Attribut bei Array Java Basics - Anfänger-Themen 3
L Private Methode in Subklasse? Java Basics - Anfänger-Themen 2
S Private Class Problem Java Basics - Anfänger-Themen 17
K Kann man Private-Konstruktoren doch aurufen? Java Basics - Anfänger-Themen 8
Luk10 Vererben von private instanzvariablen Java Basics - Anfänger-Themen 20
P zugriff auf private variablen Java Basics - Anfänger-Themen 5
A Allgemeine Frage zur Sichtbarkeit "private" Java Basics - Anfänger-Themen 5
berliner Klassen Vererbung und Zugriff auf innere private Variable Java Basics - Anfänger-Themen 22
G field public/private wann Java Basics - Anfänger-Themen 11
Spin private Frage Java Basics - Anfänger-Themen 16
G Zugriff auf private Variablen einer inneren Klasse Java Basics - Anfänger-Themen 5
G Private Messages versenden Java Basics - Anfänger-Themen 13
S Zugriffe über Private Instanzvariablen Java Basics - Anfänger-Themen 3
J Public / Private Keys speichern bzw. lesen? Java Basics - Anfänger-Themen 8
R Private Methoden von auserhalb aufrufen Java Basics - Anfänger-Themen 2
N private variable vom typ einer klasse Java Basics - Anfänger-Themen 20
A in abstract Klasse private Variablen Java Basics - Anfänger-Themen 3
G GUI Controls private oder public Java Basics - Anfänger-Themen 6
G Variablen public oder private? Java Basics - Anfänger-Themen 9
P Private Klassen Java Basics - Anfänger-Themen 4
F Frage zur Vererbung und Zugriffmodifikator private Java Basics - Anfänger-Themen 3
S private public Java Basics - Anfänger-Themen 5
R private / public Frage Java Basics - Anfänger-Themen 7
S private String text; -> "Illegal start of expression Java Basics - Anfänger-Themen 7
R Klasse nicht sichtbar(kein private-Fehler) Java Basics - Anfänger-Themen 2
G Public ,private,protected Java Basics - Anfänger-Themen 1
R Private Klasse in Applet nutzen? Java Basics - Anfänger-Themen 9
B Instanzvariablen private? Java Basics - Anfänger-Themen 5
M Sichtbarkeit von private Java Basics - Anfänger-Themen 2
A public/private/etc. Zusatz weglassen Java Basics - Anfänger-Themen 2
M OOP frage, private variablen default-wert zuweisen sinnvoll? Java Basics - Anfänger-Themen 5
M [SOLVED]private Daten head - neues objekt? Java Basics - Anfänger-Themen 12
H Vererbung:private Java Basics - Anfänger-Themen 7
U public, private, protected und "default access" - Java Basics - Anfänger-Themen 14
T private final String oder final String? Was ist richtig? Java Basics - Anfänger-Themen 4
M Jede Variable als private, protected etc. deklarieren? Java Basics - Anfänger-Themen 7
U was macht "private" ? :) Java Basics - Anfänger-Themen 7
G private methode wird aus anderer klasse aufgerufen? Java Basics - Anfänger-Themen 3
megachucky wie bekomm ich ein private attribut aus einer andren klasse? Java Basics - Anfänger-Themen 18
H private anstatt public Java Basics - Anfänger-Themen 2
H public und private Java Basics - Anfänger-Themen 5
A Public/Private und wie importieren? Java Basics - Anfänger-Themen 13
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
KogoroMori21 Objektvariablen, Klassenvariablen, Instanzvariablen Java Basics - Anfänger-Themen 1
D Richtige Kommentierung Klassenvariablen Java Basics - Anfänger-Themen 19
N Klassenvariablen zurücksetzen Java Basics - Anfänger-Themen 4
G Klassenvariablen & Instanzvariablen Java Basics - Anfänger-Themen 4
J Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen Java Basics - Anfänger-Themen 6
N Vererbung Best Practice: Verfeinerte Klassenvariablen in Unterklasse Java Basics - Anfänger-Themen 5
S Initialisierung von Klassenvariablen Java Basics - Anfänger-Themen 7
A Klassenvariablen zusammen fassen Java Basics - Anfänger-Themen 5
G Frage zu Fields - Klassenvariablen Java Basics - Anfänger-Themen 9
A Klassenvariablen Referenz auf ein Objekt Java Basics - Anfänger-Themen 18
M Variablen Gültigkeit von Klassenvariablen bei Vererbung? Java Basics - Anfänger-Themen 4
J Klassenvariablen lesen Java Basics - Anfänger-Themen 13
B Datentypen Klassenvariablen Java Basics - Anfänger-Themen 2
G OOP Verständisfrage zu Klassenvariablen Java Basics - Anfänger-Themen 5
C Klassenvariablen und Klassenmethoden Java Basics - Anfänger-Themen 17
J Problem mit inneren Klassen und Klassenvariablen Java Basics - Anfänger-Themen 11
G Sollte man Klassenvariablen als final deklarieren? Java Basics - Anfänger-Themen 3
X Zugriff auf Klassenvariablen NUR mit get/set Methoden? Java Basics - Anfänger-Themen 8
W Klassenvariablen und Werte ausgeben Java Basics - Anfänger-Themen 2
D Globale Klassenvariablen. Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben