3 sınıfım var ve dikdörtgen sınıfımda boy ve genişliğin aynı uzunlukta olup olmadığını kontrol eden bir yöntem var, ancak üçgen sınıfımda yükseklik ve genişlik ayarlıyorum ve üçgen sınıfımı miras alırsam dikdörtgen isSquare() yöntemi, 0.0 ve 0.0 varsayılan değerlerini kullandığından doğrudur. Nasıl oluyor da Üçgen sınıfında atadığım şey miras kalmıyor?Java'da sınıf değişkenleri miras alınıyor?
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();
}
}
Başlangıçta doğru olmalıdır. Genişlik ve yükseklik özelliklerini değiştirdikten sonra farklı olabilir. Ve bir Dikdörtgen bir Üçgen türü değildir, bu yüzden çok iyi bir sınıflandırma yapısı değildir. – ManoDestra
... Bir dikdörtgen ** kesinlikle bir üçgen değildir, yani miras yapınızın yanlış olduğu (ve şekillerin geleneksel olarak sorunlu olduğu). Ayrıca, bir üçgen alan zaten yanlış olur. –
Lol, Korkunç sınıf yapısının olduğunu biliyorum, ANCAK neden işe yaramadığını merak ediyorum – Eli