Java中静态方法调用是如何工作的?

问题描述 投票:0回答:1

当调用函数 testFunc(),我没有使用语法 Apples.testFunc(). 但代码却能成功运行。为什么会这样?

class Apples {

       public static void main(String args[] ) {
           testFunc();
       }   

       public static void testFunc() {
           System.out.println("Hello world!");
       }
    }
java oop
1个回答
9
投票

由于,静态方法是在同一个类中。所以,你不需要指定类名。

如果它是在不同的类中,那么你需要指定类名。

请记住,非静态方法可以同时访问静态和静态方法。 非静态方法可以同时访问静态和非静态成员 而静态方法只能访问静态成员。

例如:

调用一个存在于不同类中的静态方法,你需要这样做。

import com.example.Test;

public class Apples {

   public static void main(String args[]) {
      Test.testFunc();
   }   
}

package com.example;

public class Test {

   public static void testFunc() {
      System.out.println("Hello world!");
   }

}

2
投票

你的函数testFunc()和函数main在同一个类中。所以你不需要在函数testFunc()前使用类名。


1
投票

当类的内存被分配时,静态方法或静态变量在类中被分配了内存,所以我们可以访问静态成员函数或静态变量。所以我们可以使用类名来访问静态成员函数或数据变量,我们可以如下调用静态函数

class Main1 {

    public static void main(String args[] ) {
        Main1.testFunc();
    }   

    public static void testFunc() {
        System.out.println("Hello world!");
    }
 }

class Main1 {

    public static void main(String args[] ) {
        testFunc();
    }   

    public static void testFunc() {
        System.out.println("Hello world!");
    }
 }

答案是一样的,但是当静态函数在其他类中时,我们必须使用类名来调用它。

© www.soinside.com 2019 - 2024. All rights reserved.