gpt4 book ai didi

java - 有多少()可以在Java中调用非静态方法?

转载 作者:行者123 更新时间:2023-11-29 09:41:22 24 4
gpt4 key购买 nike

嗯。我是 Java 的新手。我知道 main 需要是静态方法。但是我读过静态方法只能调用其他静态方法吗?那我们怎么可以调用非静态方法呢?这是一个困惑而不是一个问题。例如

 public class Function
{
public static int side = 10,area,vol;

public static void main(String args[])
{
System.out.println("programme to find area and volume");
Function fu = new Function();
fu.calarea();
}
public void calarea()
{
area = side*side;
System.out.println("finished calculating area now calling volume");
calvol();
}
public void calvol()
{
vol = area*side;
System.out.println("finished calculating volume now calling display");
display();
}
public void display()
{
System.out.println("side of a square ==>"+side);
System.out.println("area of a square ==>"+area);
System.out.println("volume of a square ==>"+vol);
}
}

在这里,main() 是一个静态方法。那么,它必须只调用静态方法吗?怎么会,它可以调用 calarea() ?如果我通过创建对象是正确的??

编辑:

我也是这么想的。而且我知道如何调用静态方法。我只想知道,如果可以调用非静态方法(通过任何方式),那么为什么说静态方法只能调用其他静态方法?

最佳答案

But I have read that an static method can call only other static methods ?

这要么是错误陈述,要么是误读。

“规则”更正确的说法是,如果没有特定(非空)实例引用,静态方法不能调用实例方法。或者换句话说,this 在静态方法中无效,因此不能显式或隐式地使用它来进行方法调用。

您的示例没有违反规则……无论哪种形式。它使用了一个非空对象引用,并且没有显式或隐式地使用 this


大多数其他子问题都由上述问题“提出”,但是......

If I am right by creating a object ??

是的。必须创建对象才能拥有可用于调用实例方法的对象引用。没有其他方法可以调用实例方法。

关于java - 有多少()可以在Java中调用非静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14389802/

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