如何创建实例变量以调用另一个类中的非静态方法?
解决Java中创建实例变量调用其他类非静态方法的问题
你的代码存在几个关键问题,先逐个说明:
- Java是大小写敏感语言,类名是
V,实例化时却写了v,这会导致编译错误,必须保持类名大小写一致。 input变量未定义,调用方法时需要传入具体的整数值,或者通过args获取命令行输入。- 静态方法
call_Print_V中直接调用非静态方法print_V(n)是不允许的,静态方法无法直接访问类的非静态成员,必须先创建类的实例再调用。
修正后的完整代码:
class V { void print_V(int number) { String v = "v"; System.out.print("Letter" + v.repeat(number)); } void print_V() { System.out.print("v"); } // 修正静态方法,先实例化V再调用非静态方法 public static void call_Print_V(int n) { V vInstance = new V(); vInstance.print_V(n); } } class Main { public static void main(String[] args) { // 1. 创建V类的实例变量 V vInstance = new V(); // 2. 通过实例变量调用带参数的非静态方法 vInstance.print_V(5); // 可选:调用无参非静态方法 // vInstance.print_V(); // 可选:调用V类的静态方法(直接用类名调用) // V.call_Print_V(3); } }
核心逻辑总结:
要调用其他类的非静态方法,必须遵循两个步骤:
- 创建目标类的实例对象:使用
类名 实例变量名 = new 类名();的格式,比如V vInstance = new V();,这里的vInstance就是你需要的实例变量。 - 通过实例变量调用非静态方法:使用
实例变量名.方法名(参数);的格式,比如vInstance.print_V(5);,即可成功调用目标类的非静态方法。
内容的提问来源于stack exchange,提问作者Jen
相关产品推荐
相关产品推荐

