JAVA Problem Develop the Shape application such that Rectan
JAVA Problem: Develop the ‘Shape’ application such that:\"
\"• ‘Rectangle’, ‘Ellipse’, and ‘Triangle’ classes inherit from the ‘Shape’ class.\"
\"• Develop the ‘Square’ and ‘Circle’ class where ‘Square’ inherits from ‘Rectangle’ and ‘Circle’ inherits from ‘Ellipse’. ‘Triangle’ has no derived class.\"
\"• For each class, implement the overridden methods ‘draw’, ‘move’, and ‘erase’. Each method should only have an output statement such as “Rectangle – draw method” that will be displayed when the method is invoked.\"
\"• Implement the default constructors for each class with a corresponding message to be displayed when invoked. No initializations are required; that is, the output message will be the only executable statement in the constructors.\"
\"• Do not implement any other methods for these classes ( i.e., ‘toString’, ‘equals’, getters and setters ).\"
\"• Implement a ‘ShapeTest’ class which will instantiate an object of each class.\"
\"• Exercise each of the ‘draw’, ‘move’, and ‘erase’ methods of each class\"
\"• Remember to make sure that there is only a single class per file.\"
Solution
package shape;
abstract class Shape
{
Shape()
{
System.out.println(\"Initialize generic shape parameters\");
}
public abstract void draw();
public abstract void move();
public abstract void erase();
}
class Rectangle extends Shape
{
Rectangle(){
super();
System.out.println(\"Rect-constructor\");
}
@Override
public void draw(){ System.out.println(\"draw rect\");}
@Override
public void erase(){ System.out.println(\"erase rect\");}
@Override
public void move(){ System.out.println(\"move rect\");}
}
class Triangle extends Shape
{
Triangle(){
super();
System.out.println(\"Tri-constructor\");
}
@Override
public void draw(){ System.out.println(\"draw tri\");}
@Override
public void erase(){ System.out.println(\"erase tri\");}
@Override
public void move(){ System.out.println(\"move tri\");}
}
class Ellipse extends Shape
{
Ellipse(){
super();
System.out.println(\"Ellipse-constructor\");
}
@Override
public void draw(){ System.out.println(\"draw el\");}
@Override
public void erase(){ System.out.println(\"erase el\");}
@Override
public void move(){ System.out.println(\"move el\");}
}
class Square extends Rectangle
{
Square(){
super(); //square parameters
System.out.println(\"square constructor\");
}
class Circle extends Ellipse
{
Circle(){
super(); //circ parameters
System.out.println(\"circ constructor\");
}
}
}


