Java接口中的静态方法
接口中的静态方法是那些在接口中用关键字 static 定义的方法。与 Interface 中的其他方法不同,这些静态方法包含函数的完整定义,并且由于定义完整且方法是静态的,因此这些方法在实现类中不能被覆盖或更改。
与接口中的默认方法类似,接口中的静态方法可以在接口中定义,但不能在实现类中覆盖。要使用静态方法,应该用它实例化接口名称,因为它只是接口的一部分。
下面的程序说明了接口中的静态方法:
程序1:演示接口中静态方法的使用。
在这个程序中,在接口中定义并声明了一个简单的静态方法,该接口在实现类 InterfaceDemo 的 main() 方法中被调用。与默认方法不同,接口 hello() 中定义的静态方法在实现类时不能被覆盖。
Java
// Java program to demonstrate
// static method in Interface.
interface NewInterface {
// static method
static void hello()
{
System.out.println("Hello, New Static Method Here");
}
// Public and abstract method of Interface
void overrideMethod(String str);
}
// Implementation Class
public class InterfaceDemo implements NewInterface {
public static void main(String[] args)
{
InterfaceDemo interfaceDemo = new InterfaceDemo();
// Calling the static method of interface
NewInterface.hello();
// Calling the abstract method of interface
interfaceDemo.overrideMethod("Hello, Override Method here");
}
// Implementing interface method
@Override
public void overrideMethod(String str)
{
System.out.println(str);
}
}
Java
// Java program to demonstrate scope
// of static method in Interface.
interface PrintDemo {
// Static Method
static void hello()
{
System.out.println("Called from Interface PrintDemo");
}
}
public class InterfaceDemo implements PrintDemo {
public static void main(String[] args)
{
// Call Interface method as Interface
// name is preceding with method
PrintDemo.hello();
// Call Class static method
hello();
}
// Class Static method is defined
static void hello()
{
System.out.println("Called from Class");
}
}
输出:
Hello, New Static Method Here
Hello, Override Method here
程序 2:演示静态方法的范围。
在这个程序中,静态方法定义的范围仅在接口内。如果在实现类中实现了同名方法,则该方法将成为相应类的静态成员。
Java
// Java program to demonstrate scope
// of static method in Interface.
interface PrintDemo {
// Static Method
static void hello()
{
System.out.println("Called from Interface PrintDemo");
}
}
public class InterfaceDemo implements PrintDemo {
public static void main(String[] args)
{
// Call Interface method as Interface
// name is preceding with method
PrintDemo.hello();
// Call Class static method
hello();
}
// Class Static method is defined
static void hello()
{
System.out.println("Called from Class");
}
}
输出:
Called from Interface PrintDemo
Called from Class