Java 使用类对象调用静态方法

Java 使用类对象调用静态方法,java,static-methods,Java,Static Methods,我创建了一个类检查作为父类,并将一个方法定义为静态类 还有一个类Check1扩展了Check类现在我创建了一个类Check1的对象 并使用此对象调用Check类方法,并确保其正常工作。 这怎么可能呢?因为类的静态方法只能使用类的名称 检查类别: 给我一个解决方案,还是我在程序中做错了?静态方法像任何其他方法一样被继承,并且可以像任何其他方法一样被重写。static仅仅意味着该方法不绑定到类的实例,而是绑定到类本身。我希望当您看到这个示例时,您会理解static public class Anim

我创建了一个类检查作为父类,并将一个方法定义为静态类 还有一个类Check1扩展了Check类现在我创建了一个类Check1的对象 并使用此对象调用Check类方法,并确保其正常工作。 这怎么可能呢?因为类的静态方法只能使用类的名称

检查类别:


给我一个解决方案,还是我在程序中做错了?

静态方法像任何其他方法一样被继承,并且可以像任何其他方法一样被重写。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();
   }
}