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 ?
It is also known as static polymorphism. This type of polymorphism is achieved by function overloading or operator overloading. Note: But Java doesn't support the Operator Overloading.
Polymorphism in Java can be achieved in two ways i.e., method overloading and method overriding. Polymorphism in Java is mainly divided into two types. Compile-time polymorphism can be achieved by method overloading, and Runtime polymorphism can be achieved by method overriding.
A real-life example of polymorphism is a person who at the same time can have different characteristics. A man at the same time is a father, a husband, and an employee. So the same person exhibits different behavior in different situations. This is called polymorphism.
Polymorphism in Object Oriented Programming occurs when there are one or more classes or objects related to each other by inheritance. It is the ability of an object to take many forms. Method Overriding is redefining a super class method in a sub class.
This is one of the problems of using visible fields - you end up using them...
You've got a color
field in both Rect
and CRect
. Fields are not polymorphic, so when you use cr2.color
, that uses the field declared in Rect
, which is always set to "transparent"
.
Your CRect
class should not have its own color
field - it should supply the colour to the superclass constructor. It makes no sense for a single rectangle to have two different color
fields - it could have borderColor
and fillColor
, of course - but just color
is too ambiguous...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With