📅  最后修改于: 2020-03-19 13:34:26             🧑  作者: Mango
在Java中,如果派生类静态函数的名称与基类静态函数的名称相同,则基类静态函数会遮盖(或隐藏)派生类静态函数。例如,以下Java代码显示“ A.fun()”。
注意:静态方法是类的属性,因此,如果从具有类名或对象中调用静态方法,则该类方法会被调用,对象的方法将不被调用。
// 文件名: Main.java
// 父类
class A {
static void fun()
{
System.out.println("A.fun()");
}
}
// 继承A
class B extends A {
static void fun()
{
System.out.println("B.fun()");
}
}
// 测试代码
public class Main {
public static void main(String args[])
{
A a = new B();
a.fun(); // prints A.fun();
// B a = new B();
// a.fun(); // 会打印 B.fun()
// 变量类型决定了要调用的方法,而不是分配的对象类型。
}
}
输出:
A.fun()
注意:如果我们同时将A.fun()和B.fun()设为非静态,则上述程序将打印“ B.fun()”。虽然这两种方法都是静态类型,但变量类型决定了要调用的方法,而不是分配的对象类型。