aspose file tools*
The moose likes Beginning Java and the fly likes main method must be public  . Why ? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "main method must be public  . Why ?" Watch "main method must be public  . Why ?" New topic
Author

main method must be public . Why ?

Chris Wox
Ranch Hand

Joined: May 25, 2006
Posts: 34
I am trying to understand why main method must have to be public .
one reason I read is that because it is the entry point and invoked automatically from outside as a result of execution of the source file .

Now it that is the case why the class in which the main method is defined
does not have to be public ?

I am trying to simply understand the concept behind why main method must be public but the class in which main method is defined does not have to be public since it seems to me as contradicting ...

Please help me out
Ernest Friedman-Hill
author and iconoclast
Marshal

Joined: Jul 08, 2003
Posts: 24187
    
  34

You're overthinking it. Ultimately, these rules were chosen for convenience of the implementor (i.e., the folks at Sun who write JVMs.) There are really no compelling, logical reasons -- it's just what made things easiest for them.


[Jess in Action][AskingGoodQuestions]
Jim Yingst
Wanderer
Sheriff

Joined: Jan 30, 2000
Posts: 18671
I think some of the rules of how default access works were chosen to make it easier for beginners to run programs without necessarily understanding how packages and access modifiers work. Other rules were made without this consideration. So some rules are a bit inconsistent or weird - this is one of them. One other thing to realize is that many decisions were made early in the history of Java when there was a lot of excitement a nd pressure to get a release out the door quickly. Those decisions weren't always erfectly logical and consistent. But as long as the result is not too badly broken, Sun is very reluctant to change such behavior now, as it might break programs for people who are obeying the rules of the language as originally stated. So there are various bits of weirdness like this that we just live with now.


"I'm not back." - Bill Harding, Twister
Chris Wox
Ranch Hand

Joined: May 25, 2006
Posts: 34
thanks for the reply folks
Puneet Pathak
Greenhorn

Joined: Jun 09, 2006
Posts: 2
So that main can be accessed from anywhere in the program and not only from the block where it is declared.
S Thanigaivel
Ranch Hand

Joined: Oct 06, 2005
Posts: 60

one reason I read is that because it is the entry point and invoked automatically from outside as a result of execution of the source file .


Remember, we cannot have a private class. Actually, java syntax allows the public static void main(String[] a) to reside only in the class that is defined as public modifier or no modifier and not private modifier. (note: no modifier is different from private modifier)

note that main() is static, so that, even if we create multiple instances of the class that contains main(), we are going to have only on main() common to all (that is, we can access it without instance).

since main() is being an entry point and follows template design pattern, in most of the cases it is where you are going to instantiate other classes and you are not going to instantiate the class containing the main method from other classes.

So, i think java developers had this flexibility in mind while developing it.


Thanigaivel S.
[ June 15, 2006: Message edited by: S Thanigaivel ]
 
 
subject: main method must be public . Why ?