A method declared as final can't be overridden. A sub-class can't have the same method signature with a different implementation.
You should declared your class as final. But you can't define your class as final, if it is an abstract class. A class declared as final can't be extended by any other class.
Yes. You can have any number of main() methods with different method signature and implementation in the class.
Yes. Any inheriting class will not be able to have it's own default main() method.
No. It doesn't matter but void should always come before main().