谁将成为没有对象的类的方法调用者?

Who will be the method invoker of a Class with no object?

提问人:Swapnil Mishra 提问时间:11/5/2023 更新时间:11/6/2023 访问量:78

问:

在面向对象编程中,“调用者”是指在另一个对象上启动/调用方法或函数执行的对象或代码。但我的问题是,如果一个类只有方法(静态)而没有对象,那么谁将成为该方法的调用者怎么办?

我想问的示例代码:

public class Calculator {
    public int add(int a, int b) { 
    return a + b; 
    }
public static void main(String[] args) { 
//Creating an instance of the Calculator class 

Calculator calc = new Calculator();

// Invoking the "add" method with the invoker (calc)
int result = calc.add(5, 3);

/*
The "calc" object is the invoker, and it invokes the "add" method with arguments
5 and 3. 
but what if there was no calc object in the calculator class 
who would have been the invoker of the method then? 
how would you have then called the add() method? by making it static ?
and calling it directly? if yes, who would be invoker of that static add() method?
*/

System.out.println("Result of addition: " + result);
    }
}
java 方法 static-methods 调用

评论

1赞 Turing85 11/5/2023
我建议阅读有关静态类成员的教程,例如 oracle.com 的这个教程。
0赞 user85421 11/5/2023
不确定在哪个上下文调用器中使用,但静态方法也可以调用方法(静态或非静态),因此我们可以说(调用)静态方法是调用,或包含该方法的类......
0赞 Andy Turner 11/5/2023
“”calc“对象是调用者”,对象是接收者calc
0赞 Reilas 11/5/2023
我认为调用者是调用对象,而不是包含该方法的。不过,我不遵循设计模式。
0赞 Reilas 11/5/2023
@user85421,这里有一个上下文,“......“调用者”是指在另一个对象上启动/调用方法或函数执行的对象或代码。

答:

1赞 Dimitris Dranidis 11/5/2023 #1

在一个类中,可以有两种类型的方法:实例方法和类(或静态)方法。若要调用实例方法,请使用类的实例(对象)来调用该方法,就像在示例中所做的那样。若要调用类方法,请使用类名来调用该方法。

以你为例:

public class Calculator {
  public static int add(int a, int b) { 
    return a + b;
  } 
}
    
public static void main(String[] args) { 
  System.out.println(Calculator.add(5,3));
}

方法被声明为 我们使用类名来调用它。addstaticCalculator

在 Calculator 类中,没有状态,没有属性。通常,没有状态的类将只有静态方法,因为该方法的行为不依赖于任何状态。