Pourquoi dois-je continuer à échouer à ce test?Besoin de définir une variable dans une classe qui est étendue à partir d'une autre classe. Ou remplacer le type
Cube Test (1.0, 1.0, 1.0) définit le type de "Cube",
largeur, la longueur et la hauteur de chaque à 1,0 rétroaction de test
attendu: Cube, 1,0, 1,0, 1,0
vôtre: Rectangle, 1.0, 1.0, 1.0
j'ai besoin de la classe de cube pour être en mesure de définir son type de cube. En ce moment, il semble se mettre à Rectangle. Ma principale remplit un tableau de formes, j'ai alors des méthodes pour compter les différents types de formes en fonction du type de chaque forme. Comment puis-je définir Cube comme une forme, quand ma classe de rectangle étend déjà la forme, mais je DOIS avoir la classe Cube étendre le rectangle. Il doit parce que j'ai besoin d'avoir accès à la zone ainsi que la longueur et la largeur.
J'ai également une interface très simple qui est implémentée par mon cube. C'est juste pour trouver le volume. Puis-je en quelque sorte utiliser mon interface pour remplacer le type?
Impossible de trouver une réponse sur StackOverflow à cette question spécifique.
Voici ma classe Rectangle
public class Rectangle extends Shape {
protected double width;
protected double length;
public Rectangle(double width, double length) {
super("Rectangle");
setWidth(width);
setLength(length);
}// end ctr
public final double getWidth () {return width; }
public final double getLength() {return length;}
public final void setWidth (double width) {
if (width < 0) {
System.out.println("Value could not be updated due to negative double.");
}else
this.width = width;
}// end width setter
public final void setLength (double length) {
if (length < 0) {
System.out.println("Value could not be updated due to negative double.");
}else
this.length = length;
}// end length setter
@Override
public double area() {
return length * width;
}// end area method
public double perimeter() {
return 2 * (length + width);
}// end perimeter method
@Override
public String toString() {
String str = "";
str += String.format("%10s", "Rectangle:") + " ";
str += "width: " + String.format("%.1f", width) + ", " + "length: " + String.format("%.1f", length);
str += ", " + "area: " + String.format("%.2f", area()) + ", ";
str += "perimeter: " + String.format("%.2f", perimeter());
return str;
}// end descriptor
}// end rect class
Voici ma classe Cube
public class Cube extends Rectangle implements Shape3D {
protected double height;
public Cube (double width, double length, double height) {
super(width, length);
setHeight(height);
}// end ctr
public final double getHeight() {return height;} // end get height
public final void setHeight (double height) {
if (height < 0) {
System.out.println("Value could not be updated due to negative double.");
}else
this.height = height;
}// end set height
@Override
public double volume() {
return super.area() * height;
} // end volume method
@Override
public String toString() {
String str = "";
str += String.format("%10s", "Cube:") + " ";
str += "width: " + String.format("%.1f", width) + ", " + "length: " + String.format("%.1f", length);
str += ", " + "area: " + String.format("%.2f", area()) + ", ";
str += "perimeter: " + String.format("%.2f", perimeter());
str += ", height: " + String.format("%.1f", height);
str += ", volume: " + String.format("%.1f", volume());
return str;
}// end descriptor
}// end cube class
La classe Rectangle vient de ma classe Shape,
public abstract class Shape {
protected String type;
public Shape (String type) {
setType(type);
}// end ctr
public final String getType() {return type; }
public final void setType (String type) {this.type = type;}
public abstract double area(); // end prototype
public double getArea() {return area();}
@Override
public String toString() {
String str = "";
str += type;
return str;
}// end descriptor
}// end shape class
Vous êtes un saint. Je suis coincé là-dessus pendant des heures. Il semble si évident maintenant .... comment l'ai-je négligé?!?! Gahh .... Donc frustré, mais tellement reconnaissant, merci monsieur. –