public class Main {
void sum(int a, int b) {
int c = a + b;
System.out.println(c);
}
public static void main(String args[]) {
Main ob = new Main();
ob.sum(10, 125);
}
}
在上面的代码中没有实例变量,但是我已经读过,如果一个方法是一个实例方法,它应该访问实例变量。那么“ sum”是实例方法吗?
sum
在这里是一个实例方法,因为它不是,static
并且需要对象的实例。您在此处创建实例:
Main ob = new Main();
在这种特殊情况下sum
,的确可以实现static
,不需要实例就可以稍微简化代码。
我已经读过,如果一个方法是一个实例方法,它应该访问实例变量
我怀疑您正在阅读的内容暗示,如果某个方法根本不与实例进行交互,那么它应该应该与之交互static
。文本中可能在某处提到了“纯功能”一词。
我不会说任何地方的所有潜在static
方法都应作为通用规则来制定。它实际上归结为对象本身的语义。由于您在这里拥有的对象几乎没有语义上下文,因此这个小例子很容易以任何一种方式进行。static
但是,假设你扩大你的对象还包括方法subtract
,multiply
,divide
等作为对象扩大,假设一个或一个以上的这些额外的方法确实使用了实例变量。拥有一个对象具有多种语义相似的方法(其中有些是static
或有些不是)的经历,将是一次令人不快的经历。
与其关注某人给您的任何特定规则,不如关注您打算作为对象构建的内容。如果您认为应该如此static
,就这样做。如果您认为不应该,那就不要。如果您不确定,则可以通过练习同时实现这两种方法,并查看在特定情况下更喜欢哪种方法。
展望将来要构建的计划很重要,因为在整个应用程序中依赖于对象的代码越多,从static
实例更改为实例的难度就越大,反之亦然。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句