You are going about the design of your game (and its classes) wrong.
To illustrate this point, I know what gravity is, but tell me what a “gravity” class is.
Gravity is just a number, and it is plugged into a few equations. The way multiplication, division, addition, and subtraction work on that number are not different from what is specified by the language standard.
This is not the use of a class. This is the use of a variable.
When you design a system, you get a general idea of all the components you will need, pick one as a good starting point, and then go into detail on just that one component.
That is when you decide on class names and class hierarchies. You don’t just decide on every class in the entire game up-front. It will never work.
You know you will need a window to see anything at all so that would be a good place to start. Think about that system first.
And no I don’t know how to get the desktop resolution from Java. You don’t need it. Just use 800×600 or 1024×768 and move on.
Next you won’t be able to see anything until you have graphics, so then, and only then, consider what kind of class structure you want for your sprites.
Next you will want a character and a ground on which he can stand.
Think about the character class next.
While only going into detail on one specific task at a time, it is always a good idea to remember the vague overview of the entire system that you originally made.
Because this would be a good time to realize that your player might share features of other things in your game such as blocks and enemies.
When you realize the potential to share things between what might have originally seemed unrelated, then you can think about a few system at once, but only for the purpose of what they share and with the main goal of getting your current task done better.
As you gain experience this becomes much easier.
Pick a starting point and go.
L. Spiro