Ich habe 3 Klassen und ich habe eine Methode in meiner Rechteckklasse, die überprüft, ob die Höhe und Breite gleich lang sind. Wenn ich jedoch die Höhe und Breite in meiner Dreiecksklasse festlege und meine Dreiecksklasse erlasse, heißt das Die Methode rectangle isSquare() ist wahr, weil sie die Standardwerte 0.0 und 0.0 verwendet. Wie kommt es, dass es nicht das erbt, was ich in der Dreiecksklasse zugewiesen habe?Erben einer Klassenvariablenwerte in Java?
class inheritence {
private double width;
private double height;
public void setHeight(double height){
this.height=height;
}
public double getHeight(){
return height;
}
public void setWidth(double width){
this.width=width;
}
public double getWidth(){
return width;
}
void showDim(){
System.out.println("Width and height are "+width+" and "+height);
}
}
class Triangle extends inheritence{
String style;
double area(){
return getHeight()* getWidth();
}
void showStyle(){
System.out.println("Triangle is "+style);
}
}
public class Rectangle extends Triangle{
boolean isSquare(){
if(getWidth()==getHeight()){
return true;
}else{
return false;
}
}
public double area(){
return getWidth()*getHeight();
}
}
public class Driver {
public static void main(String[]args){
Triangle t1=new Triangle();
Triangle t2=new Triangle();
Rectangle rect=new Rectangle();
t1.setHeight(10);
t1.setWidth(20);
if(rect.isSquare()){
System.out.println("Its a square!");
}else{
System.out.println("Its not a square");
}
System.out.println(t1.getHeight());
System.out.println(t1.getWidth());
t1.showDim();
System.out.println("The area for t1 is "+t1.area());
t1.style="Outlined";
t1.showStyle();
}
}
Es sollte zunächst wahr sein. Sobald Sie die Eigenschaften Breite und Höhe geändert haben, kann es anders sein. Und ein Rectangle ist keine Art von Triangle, also ist das keine besonders gute Klassierungsstruktur. – ManoDestra
... Ein Rechteck ist ** definitiv NICHT ** ein Dreieck, also ist deine Vererbungsstruktur falsch zu sein (und Formen sind sowieso traditionell problematisch). Auch die Fläche für ein Dreieck wäre falsch. –
Lol, ich weiß, es ist schrecklich Classing Struktur, aber ich frage mich, warum es nicht funktioniert – Eli