Java 使用类对象调用静态方法
我创建了一个类检查作为父类,并将一个方法定义为静态类 还有一个类Check1扩展了Check类现在我创建了一个类Check1的对象 并使用此对象调用Check类方法,并确保其正常工作。 这怎么可能呢?因为类的静态方法只能使用类的名称 检查类别:Java 使用类对象调用静态方法,java,static-methods,Java,Static Methods,我创建了一个类检查作为父类,并将一个方法定义为静态类 还有一个类Check1扩展了Check类现在我创建了一个类Check1的对象 并使用此对象调用Check类方法,并确保其正常工作。 这怎么可能呢?因为类的静态方法只能使用类的名称 检查类别: 给我一个解决方案,还是我在程序中做错了?静态方法像任何其他方法一样被继承,并且可以像任何其他方法一样被重写。static仅仅意味着该方法不绑定到类的实例,而是绑定到类本身。我希望当您看到这个示例时,您会理解static public class Anim
给我一个解决方案,还是我在程序中做错了?静态方法像任何其他方法一样被继承,并且可以像任何其他方法一样被重写。static仅仅意味着该方法不绑定到类的实例,而是绑定到类本身。我希望当您看到这个示例时,您会理解static
public class Animal
{
public static void hide()
{
System.out.format("The hide method in Animal.%n");
}
public void override()
{
System.out.format("The override method in Animal.%n");
}
}
public class Dog extends Animal
{
public static void hide()
{
System.out.format("The hide method in Animal.%n");
}
public void override()
{
System.out.format("The override method in Animal.%n");
}
public static void main(String args[])
{
Animal a = new Dog();
a.hide();
a.override();
}
}
更简单地说,实例方法被覆盖,静态方法被隐藏
谢谢。您也可以使用null对象来完成,因为静态方法检查类而不是对象,例如Check c=null;c、 maina1;。在这种情况下不存在空指针异常。不清楚您试图做什么,甚至不清楚什么不起作用。但是您的对象与类具有相同的名称,因此对象方法调用看起来与静态调用完全相同。您正在重写主方法。你不必总是把类名放在前面。您也可以在类中直接通过名称来调用它。我敢肯定,当您使用Check1.main时,您将得到堆栈溢出,因为您正在导致无限递归!这可能对你有帮助。。
public class Check1 extends Check
{
public static void main(String a[])
{
Check1 ob=new Check1();
int a1[]={1,2,3,4};
ob.main(a1); // working
main(a1); // working
Check.main(a1); // working
Check1.main(a1); // working
System.out.println("Main");
}
}
public class Animal
{
public static void hide()
{
System.out.format("The hide method in Animal.%n");
}
public void override()
{
System.out.format("The override method in Animal.%n");
}
}
public class Dog extends Animal
{
public static void hide()
{
System.out.format("The hide method in Animal.%n");
}
public void override()
{
System.out.format("The override method in Animal.%n");
}
public static void main(String args[])
{
Animal a = new Dog();
a.hide();
a.override();
}
}