[英]Is it necessary for instance methods to access instance variable in java?
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
并且需要 object 的实例。 你在这里创建你的实例:
Main ob = new Main();
在这种特殊情况下, sum
确实可以static
,通过不需要实例稍微简化了代码。
我已经读过,如果一个方法是一个实例方法,它应该访问实例变量
我怀疑您正在阅读的内容表明,如果一个方法根本不与实例交互,那么它可能应该是static
。 文中某处可能会提到“纯函数”一词。
到目前为止,我不会 go 说所有可能static
方法都应该被static
作为通用规则。 它实际上归结为 object 本身的语义。 由于您在这里拥有的 object几乎没有语义上下文,因此这个小例子可以很容易地 go 任何一种方式。
但是假设您扩展了 object 以还包括subtract
、 multiply
、 divide
等方法。随着 object 的扩展,假设这些附加方法中的一个或多个确实使用了实例变量。 如果 object 具有多种语义相似的方法,其中一些是static
而一些不是,这将是一种不和谐的体验。
与其关注某人给您的任何特定规则,不如关注您打算构建的 object。 如果你认为它应该是static
,那就这样吧。 如果你觉得不应该,那就不要。 如果您不确定,那么作为练习实施两者并查看在特定情况下您更喜欢哪个。
展望您打算构建的未来计划很重要,因为在整个应用程序中依赖 object 的代码越多,从static
更改为实例的难度就越大,反之亦然。
是的, “求和”一个实例方法,因为任何非静态方法都是实例方法。 此外,实例方法不必访问实例变量。 正确的说法是“如果一个方法是一个实例方法,它可以访问实例变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.