我可以更改对象的变量吗?

时间:2015-09-11 02:04:59

标签: java object

我有一个可以保存姓名和标记的学生对象。

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方法和覆盖它的方法,但这对我的任务来说是不可接受的。还有其他办法吗?

2 个答案:

答案 0 :(得分:1)

您可以创建复制构造函数,这样您就可以在temp中使用相同的属性值创建新引用。目前JohnTemp具有相同的引用,其中一个更改将反映在其他内容中。

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变量名称以小写字母开头。