Im currently trying to create a brick breaker game however I am experiencing a few issues.
I currently have an abstract class shape and methods for square and circle to draw the shapes for the game. However in my main method when I try to add the shapes it only outputs one shape so in this case for my code it only displays the circle and not the paddle. I was wondering if anyone could help me resolve this?
Main
The line where im adding the new square is not working in this case.
import javax.swing.*;
import java.awt.*;
public class Main {
public static void main(String[] args) {
    FilledFrame frame = new FilledFrame();
    frame.setSize(700, 600);
    frame.setResizable( false );
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
    frame.setTitle("CE203_RegNo_1603977");
    frame.setVisible( true );
}
static class FilledFrame extends JFrame{
    public FilledFrame(){
        // left border
        JPanel leftBorder   = new JPanel();
        leftBorder.setSize(4, 700);
        leftBorder.setBackground(Color.BLACK);
        add(leftBorder, BorderLayout.WEST);
        // top border
        JPanel topBorder    = new JPanel();
        topBorder.setSize(700, 4);
        topBorder.setBackground(Color.BLACK);
        add(topBorder, BorderLayout.NORTH);
        //right border
        JPanel rightBorder  = new JPanel();
        rightBorder.setSize(4, 700);
        rightBorder.setBackground(Color.BLACK);
        add(rightBorder, BorderLayout.EAST);
        /*
        JPanel cenBorder = new JPanel();
        cenBorder.setSize(696, 696);
        cenBorder.setBackground(Color.blue);
        add(cenBorder, BorderLayout.CENTER);
        */
        // create paddle
        Square paddle       = new Square(100, 8, 310, 550, Color.BLUE);
        add(paddle, BorderLayout.SOUTH);
        // create ball
        Circle ball        = new Circle(20, 20, 120, 350, Color.YELLOW);
        add(ball, BorderLayout.CENTER);
    }
}
}
Shape
import javax.swing.*;
import java.awt.*;
public abstract class Shape extends JPanel {
public int posX;
public int posY;
public Color color;
public Shape(int posX, int posY, Color color){
    this.posX   = posX;
    this.posY   = posY;
    this.color  = color;
}
public abstract void paintComponent (Graphics g);
}
Square
import java.awt.*;
import java.awt.Color;
public class Square extends Shape {
protected int width;
protected int height;
public Square(int width, int height, int posX, int posY, Color color) {
    super(posX, posY, color);
    this.width  = width;
    this.height = height;
}
@Override
public void paintComponent (Graphics g) {
    g.setColor(color);
    g.fillRect(posX, posY, width, height);
}
}
Circle
import java.awt.*;
public class Circle extends Shape {
protected int width;
protected int height;
public Circle(int width, int height, int posX, int posY, Color color) {
    super(posX, posY, color);
    this.width = width;
    this.height = height;
}
@Override
public void paintComponent(Graphics g) {
    g.setColor(color);
    g.fillOval(posX, posY, width, height);
}
}
