Java 中可以重载或覆盖静态方法吗?
如果一个类有多个名称相同但参数不同的函数,则称为方法重载。如果子类提供了其父类已提供的某个方法的具体实现,则称为方法覆盖。
方法重载提高了程序的可读性。方法覆盖提供了其超类参数在重载的情况下必须不同,在覆盖的情况下必须相同的方法的具体实现。
现在考虑静态方法的情况,那么静态方法在重载和覆盖方面有以下规则。
可以通过另一个静态方法重载。
不能被子类中的另一个静态方法覆盖。其背后的原因是子类只隐藏了静态方法,而不是覆盖它。
示例
以下示例演示了这一点。
class SuperClass {
public static void display() {
System.out.println("SuperClass.display()");
}
//Method overloading of static method
public static void display(int a) {
System.out.println("SuperClass.display(int): " + a);
}
}
class SubClass extends SuperClass {
//Not method overriding but hiding
public static void display() {
System.out.println("SubClass.display()");
}
}
public class Tester {
public static void main(String[] args) {
SuperClass object = new SubClass();
//SuperClass display method is called
//although object is of SubClass.
object.display();
object.display(1);
}
}
输出
SuperClass.display() SuperClass.display(int): 1
注意
静态方法在编译时解析,不能被子类覆盖。实例方法在运行时解析,可以被覆盖。
静态方法可以重载。
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP