I have these 4 java clases: 1
public class Rect {
    double width;
    double height;
    String color;
    public Rect( ) {
        width=0;
        height=0;
        color="transparent";      
    }
    public Rect( double w,double h) {
        width=w;
        height=h;
        color="transparent";
    }
    double area()
    {
        return  width*height;
    } 
}
2
public class PRect extends Rect{
    double depth;
    public PRect(double w, double h ,double d) {
        width=w;
        height=h;
        depth=d;
    }
    double area()
    {
        return  width*height*depth;
    }     
}
3
public class CRect extends Rect{ 
    String color;
    public CRect(double w, double h ,String c) {
        width=w;
        height=h;
        color=c;
    }
    double area()
    {
        return  width*height;
    }     
}
4
public class test {
    public test() { }
    public static void main(String[] args) {  
        Rect r1=new Rect(2,3);
        System.out.println("area of r1="+r1.area());
        PRect pr1=new PRect(2,3,4);
        System.out.println("area of pr1="+pr1.area());
        CRect cr1=new CRect(2,3,"RED");
        System.out.println("area of cr1="+cr1.area()+"  color = "+cr1.color);
        System.out.println("\n POLY_MORPHISM ");
        Rect r2=new Rect(1,2);
        System.out.println("area of r2="+r2.area());
        Rect pr2=new PRect(1,2,4);
        System.out.println("area of pr2="+pr2.area());
        Rect cr2=new CRect(1,2,"Blue");
        System.out.println("area of cr2="+cr2.area()+"  color = "+cr2.color); 
    }
}
I got the output:
area of r1=6.0 area of pr1=24.0 area of cr1=6.0 color = RED POLY_MORPHISM area of r2=2.0 area of pr2=8.0 area of cr2=2.0 color = transparent***
why consider cr2 as Rect(super class) and with "transparent" color not as CRect (sub class) with "Blue" color ?
 
     
     
     
    