I understand the public is when i need to use it somewhere else, and private is if i only need to use it here. Final means that it does and should not be changed anymore. But when should I use static?
Some uses for 'static' fields are:
(1) when a value is the same for all objects of the class;
(2) when the value is a default value for fields of the objects of the class;
(3) when referencing a single instance of a class;
(4) to retain a value between resets of the project (like for highscore of current session);
Some reasons for 'static' methods are:
(1) to allow 'setting' and 'getting' the values of 'static' fields;
(2) to perform actions related to a class in general (the preceding (1) could be considered as part of this) or to all objects of a class;
(3) to perform actions totally unrelated to a class in your project;
There is also the 'static' execution block which runs when you compile your project. It can be used to set up class images in 'static' fields or call 'static' methods to set the initial values of 'static' fields. Because 'static' fields are not reset when you reset your project, you will need to reset any fields whose values have been changed that should be their initial value at that time. This should be done in your initial World object constructor.