我有一个可以保存姓名和标记的学生对象。
public class Student{
Public String name;
Public int mark;
public Student (int argMark, String argName)
{ mark=argMark; name=argName;}
}
当我创建一名学生时:
Student john = new Student(70, "John");
我需要稍后更改标记,同时保留先前的标记
Student temp = john;
temp.mark = 60;
当我打印出来时,它们都有60个标记
System.out.println(temp.mark);
System.out.println(john.mark);
系统显示答案:60为他们两个
我知道我可以扩展一个类并有一个get,set方法和覆盖它的方法,但这对我的任务来说是不可接受的。还有其他办法吗?
答案 0 :(得分:1)
您可以创建复制构造函数,这样您就可以在temp
中使用相同的属性值创建新引用。目前John
和Temp
具有相同的引用,其中一个更改将反映在其他内容中。
public Student (Student student) {
this.mark = student.getMark();
this.name = student.getName();
}
很少有建议,
答案 1 :(得分:1)
当你说
时Student Temp = John; // <-- typo for John
您为Jhon
引用的同一实例分配引用。根据您的问题,您需要第二个实例。像
Student Temp = new Student(John.Mark, John.Name);
此外,按照惯例,Java变量名称以小写字母开头。