你创建对象错了吧、Circle circle = new Circle (10.0)、你的构造方法参数是double类型的、你传进去int
答案:
Java中只支持值传递,当一个对象被当作参数传递到一个方法,参数的值就是对该对象的引用。因此,在静态方法中调用非静态方法需要将对象作为参数传递给静态方法,然后进行调用。
具体的操作:
public static void callNonStaticMethod(MyClass obj){
obj.nonStaticMethod(); // 调用传入对象的非静态方法
}
public static void myStaticMethod() {
MyClass obj = new MyClass(); // 创建对象
callNonStaticMethod(obj); // 调用定义的方法
}
完整代码示例:
public class MyClass {
// 静态方法
public static void myStaticMethod() {
MyClass obj = new MyClass(); // 创建对象
callNonStaticMethod(obj); // 调用定义的方法
}
// 非静态方法
public void nonStaticMethod() {
System.out.println("This is a non-static method");
}
// 创建一个方法,该方法需要传入一个对象作为参数,并调用该对象的非静态方法
public static void callNonStaticMethod(MyClass obj){
obj.nonStaticMethod(); // 调用传入对象的非静态方法
}
public static void main(String[] args) {
myStaticMethod(); // 调用静态方法
}
}