在Java中可以重载或覆盖静态方法吗

Java中的静态方法可以重载。

让我们看一个例子-

示例

public class Demo{
   public static void test(){
      System.out.println("Demo类test函数已被调用");
   }
   public static void test(int val){
      System.out.println("带有参数的Demo类test函数已被调用");
   }
   public static void main(String args[]){
      System.out.println("在主类中,调用了Demo类的方法");
      Demo.test();
      Demo.test(57);
   }
}

输出结果

在主类中,调用了Demo类的方法
Demo类test函数已被调用
带有参数的Demo类test函数已被调用

名为Demo的类包含一个名为“ test”的函数,该函数可打印特定消息。它还定义了另一个名为“ test”的函数,该函数以整数值作为参数。在main函数中,调用test函数时不带参数和带整数参数。相关消息将显示在控制台上。

Java中的静态方法不能被覆盖。具有相同签名的静态方法可以在子类中定义,但不会是运行时多态。因此,无法覆盖。这是一个例子-

示例

class base_class{
   public static void show(){
      System.out.println("来自基类的静态或类方法");
   }
   public void print_it(){
      System.out.println("来自基类的非静态方法或实例方法");
   }
}
class derived_class extends base_class{
   public static void show(){
      System.out.println("派生类的静态或类方法");
   }
   public void print_it(){
      System.out.println("派生类的非静态方法或实例方法");
   }
}
public class Demo{
   public static void main(String args[]){
      base_class my_instance = new derived_class();
      System.out.println("创建基类实例。");
      my_instance.show();
      System.out.println("函数show被调用");
      my_instance.print_it();
      System.out.println("函数print_it被调用");
   }
}

输出结果

创建基类实例。
来自基类的静态或类方法
函数show被调用
派生类的非静态方法或实例方法
函数print_it被调用

基类有一个名为“ show”的静态函数,可打印一条消息。同样,另一个名为“ print_it”的函数也会打印一条消息。类是从继承这两个函数的基类派生的。名为Demo的类包含主函数,该函数创建派生类型为class的基类的实例。 相关消息将显示在控制台上。

总结

static方法不能被实例方法覆盖,实例方法不能被static方法重载。