📜  Java接口中的静态方法

📅  最后修改于: 2022-05-13 01:55:31.982000             🧑  作者: Mango

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