У меня есть 3 класса, и у меня есть метод в моем классе прямоугольников, который проверяет, имеют ли высоту и ширину одну и ту же длину, однако, если я задаю высоту и ширину в моем треугольном классе и наследую свой класс треугольников, он говорит, что Метод rectangle isSquare() является истинным, потому что он использует значения по умолчанию 0.0 и 0.0. Почему это не наследует то, что я назначил в классе Triangle?Наследование значений переменных классов в 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();
}
}
Это должно быть правдой изначально. Как только вы измените свойства ширины и высоты, тогда это может быть другим. А прямоугольник - это не тип треугольника, так что это не очень хорошая классическая структура. – ManoDestra
... Прямоугольник ** определенно НЕ ** треугольник, поэтому ваша структура наследования неправильна к тому, чтобы быть с (и форма изначально традиционно проблематична). Кроме того, область для треугольника была бы неправильной в любом случае. –
Lol, я знаю, что это страшная структура классификации, НО мне интересно, почему это не работает – Eli