title: Class is not abstract and does not override abstract method
body: <p>So I've been working on a homework on abstraction for my programming class and fell into a problem. The goal for me right now is to be able to use abstraction, then later be able to draw with rectangles and ovals a simple city, like a rectangular building or a oval light on a light post. </p>
  
  <p>The error I am receiving when I compile is: MyTestApp.Rectangle is not abstract and does not override abstract method drawEllipse(java.awt.Graphics) in MyTestApp.Shape. This Error shows up on the line "class Rectangle extends Shape{" right below the class Shape.</p>
  
  <p>My question is what am I doing wrong with my abstraction? I've been messing with the constructors and draw() methods in classes Rectangle and Ellipse for a while now and still to no luck happen to find a solution.</p>
  
  <p>Code is below:</p>
  
  <pre><code>import java.awt.*;
  import javax.swing.*;
  
  public class MyTestApp extends JPanel {
      Rectangle rect;
      Ellipse oval;
      public static void main(String [] args) {
          MyTestApp myTestApp = new MyTestApp ();
          myTestApp.test();
      }
  
      public MyTestApp () { //creates the jframe
          JFrame frame = new JFrame("MyClass Driver");
          setBackground(new Color(200, 250, 200));
          setPreferredSize(new Dimension(500, 400));
          frame.add(this);
          frame.pack();
          frame.setVisible(true);
      }
  
      public void delay(int msecs) {
          try {
              Thread.sleep(msecs);
          } catch (InterruptedException e) {
          }
      }
  
      public void paint(Graphics g) {//paints the rectangle and ellipse
          super.paint(g);
          if (rect != null)
              rect.drawRectangle(g);
          if (oval != null)
              oval.drawEllipse(g);
      }
  
      public void test() {//gives the x/y position, width/height, and fill/outline color for the rectangle and oval
          delay(1000);
          rect = new Rectangle(20, 30, 23, 75, Color.GREEN, Color.BLUE);
          oval = new Ellipse(10, 10, 10 , 34, Color.RED, Color.MAGENTA);
          repaint();
      }
  
      public abstract class Shape{//abstract class Shape that sets the x/y, width/height, and colors for the shapes
          private int x, y, width, height;
          private Color fillColor;
          private Color outlineColor;
          public Shape(int x, int y, int width, int height, Color fillColor, Color outlineColor) {
              setXY(x, y);
              setSize(width, height);
              setFillColor(fillColor);
              setOutlineColor(outlineColor);  
          }
  
          public boolean setXY(int x, int y) {
              this.x = x;
              this.y = y;
              return true;
          }
  
          public void setSize(int width, int height) {
              if (width &gt; 0)
                  this.width = width;
              if (height &gt; 0)
                  this.height = height;
          }
  
          public boolean setFillColor(Color fillColor){
              if (fillColor == null) return false;
              this.fillColor = fillColor; 
              return true;
          }
  
          public boolean setOutlineColor(Color outlineColor){
              if (outlineColor == null) return false;
              this.outlineColor = outlineColor; 
              return true;
          }
  
          public Color getFillColor() {
              return fillColor;
          } 
  
          public Color getOutlineColor() {
              return outlineColor;
          } 
  
          public abstract void drawRectangle(Graphics g);//do i need two?
          public abstract void drawEllipse(Graphics g);//do i need both?
      }
      class Rectangle extends Shape{//!!!!!!!!!! where the error shows
          public Rectangle(int x, int y, int width, int height, Color fillColor, Color outlineColor) {
              super(x, y, width, height, fillColor, outlineColor);
          }
  
          public void drawRectangle(Graphics g){//draws the retangle
              g.setColor(fillColor);
              g.fillRect(x, y, width, height);
              g.setColor(outlineColor);
              g.drawRect(x, y, width, height);
          }
      }
      class Ellipse extends Shape{
          public Ellipse(int x, int y, int width, int height, Color fillColor, Color outlineColor) {
              super(x, y, width, height, fillColor, outlineColor);
          }
  
          public void drawEllipse(Graphics g){//draws the ellipse
              g.setColor(fillColor);
              g.fillOval(x, y, width, height);
              g.setColor(outlineColor);
                  g.drawOval(x, y, width, height);
              }
          }
  }
  </code></pre>
  
  <p>Thanks for reading and helping!</p>