gpt4 book ai didi

java - 公共(public)类的公共(public)方法可以在 main 中仅通过其名称(如 "method()"代替 "classname.method()")调用吗?

转载 作者:行者123 更新时间:2023-12-02 04:54:24 24 4
gpt4 key购买 nike

我在 hackerrank.com 中发现了这段代码,这让我提出了这个问题:

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {


static int solveMeFirst(int a, int b) {
return a+b;
}


public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a;
a = in.nextInt();
int b;
b = in.nextInt();
int sum;
sum = solveMeFirst(a, b);
System.out.println(sum);
}
}

为什么这是可能的?这里,不应该是Solution.solveMeFirst(a,b);

最佳答案

Here, shouldn't it be Solution.solveMeFirst(a,b);

可以这样调用它,但您当然不必这样做。

查找名字含义的详细规则在JLS 6.5中给出。 ,但基本上编译器将搜索“当前”类(您从中调用它的类)和所有祖先类(在本例中只是 Object)。它还将使用任何静态导入(在本例中您没有)。

这与实例方法相同:

public class Foo {
public void firstMethod() {
secondMethod();
}

private void secondMethod() {
}
}

实例方法可以在没有任何限定的情况下调用静态方法,但静态方法不能在不指定调用该方法的实例的情况下调用实例方法,例如

public class Foo {
public static void staticMethod(Foo instance) {
instance.instanceMethod();
}

private void instanceMethod() {
}
}

关于java - 公共(public)类的公共(public)方法可以在 main 中仅通过其名称(如 "method()"代替 "classname.method()")调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28913757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com