对于下面的代码:
public class NewClass {
public static class superclass {
static void print()
{
System.out.println("print in superclass.");
}
}
public static class subclass extends superclass {
static void print()
{
System.out.println("print in subclass.");
}
}
public static void main(String[] args)
{
superclass A = new superclass();
superclass B = new subclass();
A.print();
B.print();
}
}
这里B.print()
打印->“超类中的打印。”,但我希望它可以打印“子类中的打印”。因为“ B”是子类的对象。
但是,如果我将static void print()
更改为void print()
,则它将正确打印“打印在子类中。”]
有人可以帮助您理解吗?
对于以下代码:public class NewClass {public static class superclass {static void print(){System.out.println(“ print in superclass。”); }} ...
静态方法不是继承树的一部分。它们仅存在于其类中,而与它们的子类或对象无关。为了减少编译错误,Java允许您像它们属于子类或对象一样调用它们,但不属于它们。