Wybacz mi, jeśli jest to zduplikowane pytanie, ale jestem początkującym w Javie i obecnie próbuję uzyskać wartość parametru z klasy zwanej nazwę i przekazać tę wartość w innej klasie zwanej studentem.

Klasa nazwy:

public class Name
{
    public String studentName;


    public Name(String fullName)
    {
        studentName = fullName;
    }
}  

Klasa studentów:

public class Student
{
    private Name studentName;
    private String id;
    private int credits;
    
    public Student(String studentID)
    {
        studentName = new Name("");
        id = studentID;
        credits = 0;
    }
}

Chcę uzyskać wartość parametru fullName, która jest ustawiona w klasie Nazwa i przekazać ją w studentName = new Name(""); dla klasy uczniów, zamiast tego przechodzącej w pustym ciągu, aby pobrać nazwę.

0
Brandon Kyaw 16 październik 2020, 17:20

1 odpowiedź

Najlepsza odpowiedź

Co rozumiesz przez "Biorąc wartość parametru fullName, która jest ustawiona w klasie nazwy"? Klasa nie będzie miała wartości, potrzebujesz dostępu do instancji tej klasy. Jestem pewien, że będziesz miał jakiś rodzaj klasy kontrolnej, np. gdzie znajduje się twój main().

W pewnym momencie utworzyłeś instancję Name:

Name n = new Name("Brandon");

Korzystając z tej instancji klasy Name, możesz uzyskać dostęp do rzeczywistej wartości:

Student s = new Student("4711", n.studentName);

, zakładając, że masz również dodatkowy parametr w konstruktorze studenta:

public class Student
{
    private Name studentName;
    private String id;
    private int credits;
    
    public Student(String studentID, String name)
    {
        studentName = new Name(name);
        id = studentID;
        credits = 0;
    }
}

, ale to spowodowałoby Ci 2 różnych obiektów {X0}}.

Inną opcją jest przekazanie samego obiektu jako parametr, więc obie obiekty odniesienia do tego samego obiektu. Zmiana studentName albo s.studentName i s.studentName i s.studentName byłoby teoretycznie w wyniku wartości odpowiednich innych zmian (mogę również przypomnieć o niektórych dyskusjach dotyczących tego tematu w Javie).

public class Student
{
    private Name studentName;
    private String id;
    private int credits;
    
    public Student(String studentID, Name nameObject)
    {
        studentName = nameObject;
        id = studentID;
        credits = 0;
    }
}

, co jest instancji

Name n = new Name("Brandon");
Student s = new Student("4711", n);

Na pewno należy rozpocząć czytanie wprowadzania do programowania obiektów, ponieważ istnieje wiele błędnych błędów w tych kilku liniach kodu. Różnica między klasą a obiektem ma kluczowe znaczenie, również w tych scenariuszach jest zwykle w tych scenariuszach, a nie zmiennych publicznych w klasach. Aby osiągnąć rodzaj zależności, chcesz mieć, możesz przyjrzeć się kompozycji i agregacji w kontekście orientacji obiektów. Warto również przyjrzeć się różnicę między wartością pass-by-wartościową a przewidzeniem.

2
kopaka 16 październik 2020, 14:52