PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ignorieren von Objektvariable



sterndu1
12-01-2009, 16:17
Ich habe hier ein kleines Problem,bei dem ich nicht weiter komme. Ich habe eine Basisklasse Punkt von der die Klasse Kreis erben soll. Nur bekomme ich bei der Augabe nur 0-Werte.Die übergebenen werden also im Konstruktor ignoriert.Was habe ich falschgemacht?



/**
*Punkt.java
*Klasse, von der andere Klassen erben
*/
class Punkt {
protected double x,y;

public Punkt(double x, double y){
this.x = x;
this.y = y;
} // public Punkt(double x, double y)

/**
* @return x,y Koordinaten eines Punktes werden zurueckgegeben.
*/
public String text(){
return new String("("+x+", "+y+")");
} // public String text()

/** Gibt die Koordinaten des Punktes (x,y) aus.
* Ruft dazu die Methode text().
* @return Formatierte Ausgabe der Punktkoordinaten.
* @see Punkt#text()
*/

public String toString(){
return new String("Punkt: "+text());
}// public String toString()

} // public class Punkt

//Klasse Kreis erweitert von der Klasse Punkt
class Kreis extends Punkt
{
private double radius; //Variable für Radius
double kreisUmfang; // Variable für Umfang
double kreisFlaeche; // Variable für Kreisfläche





//Konstruktor der Klasse Kreis


Kreis(double x, double y, double radius){
super(x,y);
this.radius =0.0;


}




//Umfang berechnen
public double kreisUmfang(){
return 2* Math.PI*radius;
}
public double kreisFlaeche()
{
return Math.PI * (radius * radius);
}


} // Ende Klasse Kreis

// Klasse Test(Hauptklasse)
public class Test{


//Aufruf der Main-Methode
public static void main(String[]args){


Kreis kreis1 = new Kreis(20,20,12);


// Ausgabe des Umfang und des Flächeninhaltes des Kreises
System.out.println(" Der Umfand des Kreises betraegt: " + kreis1.kreisUmfang() + " und der Flaecheninhalt des Kreises betraegt : " +
+ kreis1.kreisFlaeche());






} // Ende Main Methode
} //Ende der Hauptklasse Test






Danke für Eure Hilfe !!!

BLUESCREEN3D
12-01-2009, 18:49
Ich habe eine Basisklasse Punkt von der die Klasse Kreis erben soll.
Hier liegt der Fehler. Ein Kreis ist kein Punkt, also sollte er auch nicht von Punkt erben.
Mach es so: Der Kreis hat einen Mittelpunkt und das ist eine Variable vom Typ Punkt.


//Klasse Kreis erweitert von der Klasse Punkt
Die Formulierung ist etwas unpassend. Kreis erweitert Punkt. Man sagt auch: Kreis ist eine Spezialisierung von Punkt.
Aber wie oben schon angedeutet, sollte Kreis ja eh nicht von Punkt erben.



new String("("+x+", "+y+")");
Guck dir bitte mal die Klasse StringBuilder an:
http://java.sun.com/javase/6/docs/api/java/lang/StringBuilder.html

Zu der eigentlichen Frage: Es wird nur 0 ausgegeben, wegen diese Zeile:

this.radius =0.0;

sterndu1
13-01-2009, 14:28
Danke :)

Habe : this.radius =0.0 in this.radius=radius umgeändert , und jetzt klappt es.

Ich werde mir gleich mal den anderen Link ansehen.


sterndu1

panzi
14-01-2009, 19:12
Lass einfach das vollkommen unnötige new String() rund um den Ausdruck weg. Das legt eine Kopie eines gerade neu angelegeten String an. Ist vollkommen redundant.