Java - Konstruktoren

T

Teutone33

Hallo,

wir haben die Programmiersprache Java ganz neu in der Schule und es geht um das Thema Konstruktoren. Hier einmal eine simple Rechnung zum Rechteck:

Code:
class Rechteck{
	double breite;	// Eigenschaften
	double hoehe;
	
	double flaeche(){		// Methoden
		double fl;
		fl = breite * hoehe;
		return fl;
	}
	double umfang(){
		double um;
		um = 2 * (breite + hoehe);
		return um;
	}
//Konstruktor

Rechteck (double breiteü, double hoeheü){
	breite = breiteü;
	hoehe = hoeheü;
}

public class HauptRechteck {
}

	public static void main(String[] args) {
		Rechteck r1= new Rechteck(5,7);
		Rechteck r2 = new Rechteck (10,20);
		double fl1,fl2;
		fl1 = r1.flaeche();
		fl2 = r2.flaeche();
		System.out.println(fl1);
		System.out.println(fl2);
	
	}
		

	}

Mir geht es nun um die Zeile des Konstruktors..... . Wofür dient der Parameter "hoeheü" und "breiteü"? Darunter gebe ich dann an, dass mein Attribut/Eigenschaft "breite" den Wert von "breiteü" bekommen soll, finde da irgendwie nicht durch, wie ich den Konstruktor nu zu händeln habe. Wäre nett, wenn mir das wer ganz langsam und logisch erklären könnte.

Ich danke euch jetzt schonmals für eure Mühen

Gruß

Teutone33
 
Durch den Konstruktor wird ein Objekt vom Typ Rechteck erstellt und initialisiert. Die übergebenen Parameter dienen hierbei der initialisierung der einzelnen Werte. Damit nun aber der übergebene Parameter von den Klassenvariablen unterschieden werden können gibst du ihnen andere Namen:
Code:
Rechteck (double breiteü, double hoeheü){
	breite = breiteü;
	hoehe = hoeheü;
}

in der Praxis wird hierfür der this-Operator benutzt. Wenn du direkt vor die Variable this. schreibst wird automatisch die Klassenvariable benutzt. Dein konstruktor würde dann wie folggt aussehen.

Code:
Rechteck(double breite, double hoehe)
{
       this.breite = breite;
       this.hoehe = hoehe;
}

Hoffe ich hab das halbwegs verständlich erklärt.

Gruß
sony2
 
Ich habe ein Problem mit meinen Konstruktor:

Code:
    public Stromsicherung(int derzeitigestromlast, int anzahlangeschlossenerGeraete, float maxampere)
    {
//....
        }


wenn ich dann für maxampere eine Kommazahl z.B. 2.56 eintrage kommt die Meldung: "Error: possible loss of precision"

Programm: mit BlueJ
 
Du musst zwischen einem Float und einem Double unterscheiden.
Ein Float hat nur eine geringe Anzahl an Nachkommastellen udn wird meist auch mit einem nachgestellten "f" gekennzeichnet (z.B. 2.3f). Ein Double bietet mehr Nachkommastellen und drüfte einer Dezimalzahl im allgemeinen am nähsten kommen.
 
Um Hammet noch zu ergänzen: Java sieht jede Zahl als double, die nicht explizit als float deklariert wurde ;)
 
ah, ok - Danke

Ich habe gedacht, wenn er float erwartet, denkt er auch, das er es bekommt. Weil es ja im Konstruktor so definiert wurde. Das ist aber nur bei float so?
 
Kanns grad nicht nachschauen, aber bei short und so ist das das Gleiche.
Wenn du eine Zahl übergibst (keine Gleitkomme) dann wird diese immer als int bebetrachtet, auch wenn ein z.b. short erwartet wird. Da muss mann dann schon explizit einen short übergeben.
 
Hi,

wenn man Fehler vermeiden will (Beispielsweise ab der 13. Nachkommastelle)
sollte man BigDecimal zum Rechnen benutzen (und auch als Parameter).

Wenn beispielsweise Deine DB Dir 9.9999999999999999999999999 gibt und Du ohne Fehler in Java damit rechnen willst, verpackst Du solche Werte in BigDecimal
(siehe API).

Grüße, Tim
 
Zurück