让3个班级互相称呼

时间:2012-04-07 22:23:25

标签: java

所以我试图弄清楚如何让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

因为改变等级功能应该改变那些变量......那么接下来会发生什么?

1 个答案:

答案 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;
    }
}