I know that main() can be overloaded in a class with the compiler always taking the one with String[] args
as arguments as the main method from where the execution starts. But is it possible to declare the same
main(String args[]) in an interface and implement it in different classes differently?
For example,
package test;
interface test
{
public void main(String args[]);
public void display();
}
package test;
class Testclass1 implements test
{
public void display()
{
System.out.println("hello");
}
public static void main(String[] args)
{
test t;
t.display();
}
}
package temp;
import test.*;
abstract class Testclass2 implements test
{
public static void main(String args[])
{
System.out.println("TESTING");
}
}
You can write static main method in Interface in java 8 but you can't override it as it's a static one.
No you cannot, because
main
has to be static in order to be used as an entry point, and Interfaces dont allow the use of static, untilJava 7
.Yes you can run a
psvm
in an interface, if you're working inJava 8
. Because static methods are allowed in an interface starting from Java 8.But of course, you cannot override the
main
method, sincepsvm
is a static method.you declared a main(String[] args) as static in Testclass1,but in interface "test" it is non-static and interface not allow main(String[] args) as static .even if you override main(String[] args) in Testcalss1 as non-static it's not allowed, because main(String args) is already defined in Testclass1.so you cannot declare main(String[] args) in interface.And u done a one more mistaken is initializing the interface test as t.You cannot do that.
There are two answers for your question.
static
methods in anInterface
main()
method, but when you launch your class, only thepublic static void main(String args[]){}
method will be treated as an entry point.For example
When you launch the above class, the out will be "
entry point
"main() is static.so, we cant override static methods.Interfaces allows abstract methods methods & they will be implemented in subclasses.So, abstract methods never be static.finally I concluded that main() is not possible to execute in interfaces.