I know what all of these do except for abstract. I'm currently in the process of teaching myself java with what I consider a middle-school-level education (my highschool was in a bad neighborhood so I got shafted)...
But what exactly are the usage patterns for these keywords? When do I use what? When do I omit them? Putting 'public' in front of my classes makes every class that uses it require a new file, can I just omit that if I want to create a monolithic source file?
Every bit of information I look up, explains exactly WHAT these do, just doesn't give a clear view of when/why/where I should use them.
Thanks in advance, Anthony
Sources tell what do these keywords mean because when/why/where they are used follows from that. My explanations have the "when" word, for example, but they follow directly from the semantics of the keywords.
private
should be used when something is not used outside of a given class
protected
should be used when
public
is used when something is accessible by every other classThe above three are "visibility modifiers". They are used when you want to limit the usage of some methods/fields/classes to a group of objects, and hide them from other objects. There is another visibility modifier - the default one (when no other is present). It is used when you want your class/method/field to be accessible only to classes from the same package.
static
is used when you don't need an instance of a class (i.e. object) to use it:
abstract
when you don't want to provide implementations in the current class:
final
- when you don't want something to change.