Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Omitting public modifier in java methods [duplicate]

I am learning Java and there's something bothering me and the textbook doesn't explain it.

I understand that you use modifiers to declare methods inside classes and all. But I suddenly got to a class declared like

static void(){
}

Why is there no public or private modifier and it still works? Can I avoid using the public modifier everywhere else or how does that work? I understand that static means member of the class and void that it doesn't return a value. Yet why not public or private for that matter.

like image 356
mateo_io Avatar asked Sep 08 '15 00:09

mateo_io


1 Answers

For the sake of this explanation, the terms "functions" and "methods" are used interchangably. There is a small difference between them, for more information, ask Google.

Methods in Java that do not explicitly specify a modifier are by default package-private, so the method is visible to all the classes in the same package as the class where the method is declared.

Public functions are callable by all classes that have access to the class (i.e your whole project) and private methods are only callable within the class the method was written in. There is also the protected modifier, which specifies that the functions can only be accessed by the class, all its subclasses and classes in the same package.

"Why is that important?", you may ask. Good question!

You should use modifiers to hide methods/properties from other classes which may (ab)use them or in a bad case could lead to unexpected behaviour (not necessarily technically, but semantically... some methods just need a little more privacy just like we do). So a good place to start is private, which means only the class it is declared in is able to call it. More often than not, you'll need to give other classes access to methods, which is why the package-private, protected and public modifiers exist.

Data encapsulation is an important paradigm in programming, and these modifiers help you achieve just that.

like image 160
the_critic Avatar answered Sep 23 '22 03:09

the_critic