gpt4 book ai didi

java - 您可以在静态方法中调用非静态方法吗?

转载 作者:行者123 更新时间:2023-11-30 08:52:18 24 4
gpt4 key购买 nike

书本答案:你不能在静态方法中调用非静态方法(除非你创建一个对象作为非静态方法的调用对象)。我没有得到括号中的部分,我尝试在静态方法中创建对象并且 Eclipse 说“无法访问的代码”。有人可以解释原因并举个例子。谢谢(语言是java)

public class RoundStuff {
public static final double PI = 3.141459;
public static double area(double radius){//Area of circle
return(PI*radius*radius);
}
public static double volume(double radius){//Volume of sphere
return((4.0/3.0)*PI*radius*radius*radius);
}

public void print(){
System.out.print("I am not parasyte");
}

}

import java.util.Scanner;


public class RoundStuffDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter radius");
double radius = keyboard.nextDouble();
RoundStuff round = new RoundStuff();
System.out.println("A circle of radius " + radius + " inches");
System.out.println("has an area of " + round.area(5.5) + " square inches.");
System.out.println("A sphere of radius " + radius + " inches");
System.out.println("has a volume of " + RoundStuff.volume(radius) + " cubic inches.");
}

}

最佳答案

Java 允许非静态方法调用其他非静态方法,而无需显式指定对象引用。据了解,调用是在调用当前非静态方法的同一实例上执行的,即您可以通过引用 this 访问的实例。

另一方面,静态方法必须提供对象。这是一个例子:

class Example {
public void one() {
System.out.println("one");
}
public void two() {
one(); // <<== #1
System.out.println("two");
}
public static void three() {
Example e = new Example();
e.one(); // <<== #2
}
}

在上面标记为 #1 的行中,您调用了 one(),但没有指定调用它的对象。但是,标记为 #2 的行必须指定调用该方法的对象。

关于java - 您可以在静态方法中调用非静态方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30203876/

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