所以我试图弄清楚如何让3个班级互相称呼。
这是主要的课程。
public class TestStudent {
public static void main(String[] args) {
myStudent mystudent_obj = new myStudent();
mystudent_obj.show_grades();
mystudent_obj.change_grades();
mystudent_obj.show_grades();
}
}
这是上课中被调用的第二课;
第二类调用另一个第三类并尝试操纵它
使用两个功能。函数show_grades
只打印出第3类中的变量
和函数change_grade
尝试更改第3类中的变量。
public class myStudent {
public void show_grades(){
Student student_obj = new Student();
System.out.println(student_obj.studGrade);
System.out.println(student_obj.studID);
}
public void change_grades(){
Student student_obj = new Student();
student_obj.studGrade='V';
student_obj.studID=10;
}
}
这是第3次调用,只有两个变量。
public class Student {
public int studID = 0;
public char studGrade = 'F';
}
当我运行程序时,它运行没有错误,我得到一个输出:
F
0
F
0
然而,我可以看到函数show_grades
起作用,它确实显示了成绩,但是
函数change_grades
不会改变成绩:
最终结果应该是这样的
F
0
V
10
因为改变等级功能应该改变那些变量......那么接下来会发生什么?
答案 0 :(得分:3)
在myStudent类中,您将在每个方法中创建一个新的Student实例,这意味着每个方法都有一个类Student的局部变量。当您第二次致电show_grades
时,会创建一个 new 实例,默认值为0和F.
如果创建变量并使用该变量,则更改等级将更改实例变量的变量,而不是每个方法中的局部变量。这是由于编程中的范围,您可以在Wikipedia了解更多信息。
public class myStudent {
private Student student_obj = new Student();
public void show_grades() {
System.out.println(student_obj.studGrade);
System.out.println(student_obj.studID);
}
public void change_grades(){
student_obj.studGrade='V';
student_obj.studID=10;
}
}