2012-04-07 5 views
2

Итак, я пытаюсь выяснить, как я могу связать 3 класса друг с другом,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(); 
    } 
} 

Это 2-й класс, который вызывается в классе выше; Второй класс вызывает другой 3-й класс и пытается его обработать , используя две функции. Функция 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 

потому что функция оценки изменения, должна была изменить эти переменные .... так что происходит?

ответ

3

В вашем классе myStudent вы создаете новый экземпляр Student в каждом методе, что означает, что каждый метод имеет локальную переменную класса Student. При вызове show_grades во второй раз, нового экземпляр создается со значениями по умолчанию 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; 
    } 
} 
+0

Благодарим вас за это замечательное объяснение и отзыв о сфере применения. – someGuy

+0

@BobDealio: np, я рад, что вы нашли его полезным – Patrick