Java中构造函数多实例属性值不符合预期的问题求助
问题分析与修复方案
核心问题
你遇到的问题根源在于静态属性的共享特性:
static修饰的name是类级别的变量,所有Test实例共用这一个变量,后创建的实例会覆盖之前的赋值- 静态方法
getName中使用this是Java语法错误,静态方法不依赖实例,不能通过this访问成员
修复步骤
要让每个实例拥有独立的name值,需要做两处修改:
- 移除
name属性的static修饰符,使其成为实例专属的成员变量 - 移除
getName方法的static修饰符,使其成为实例方法,从而能访问当前实例的name
修正后的代码
Test类代码
public class Test { private String name; public Test(String name) { this.name = name; } public String getName() { return this.name; } }
测试代码
Test test = new Test("Tom"); Test test1 = new Test("Kenny"); System.out.println(test.getName()); System.out.println(test1.getName());
输出结果
Tom Kenny
这样修改后,每个Test实例都会维护自己的name属性,调用实例的getName方法时,会返回当前实例对应的名字,符合你的需求。
内容的提问来源于stack exchange,提问作者PeytonPlayz595
相关产品推荐
相关产品推荐

