راکت
حل شده

روش مقدار دهی به فیلد های یک کلاس از کلاس دیگر

3 پاسخ

سلام دوستان
من دو تا کلاس در داخل جاوا تعریف کردم
کلاس Student و کلاس Date

public class Student {
    private String NAME;
    private int ID;
    private Date  date = new Date();

    public String getNAME() {
        return NAME;
    }

    public void setNAME(String NAME) {
        this.NAME = NAME;
    }

    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }
}
public class Date {
    private int D;
    private int M;
    private int Y;

    public int getD() {
        return D;
    }

    public void setD(int d) {
        D = d;
    }

    public int getM() {
        return M;
    }

    public void setM(int m) {
        M = m;
    }

    public int getY() {
        return Y;
    }

    public void setY(int y) {
        Y = y;
    }
}

با توجه به اینکه در کلاس main هر بار یک نمونه از Student تعریف میکنیم در واقع 5 تا متغیر ساخته میشه Name , ID , Date و از اونجایی که Date 3 متغیر داره پس درواقع با هر نمونه سازی Student 5 متغیر ساخته میشه ولی مشکل اینجاست که من نمیتونم فیلد های Date رو از ظریق نمونه سازی Student مقدار دهی کنم!!

آراد
آراد
@aradolfati
ثبت پرسش جدید

پاسخ‌ها

3
:)
:)
@ERR

تخصص: اندروید - تازه کار

بهترین پاسخ

چرا میشه
مثل زیر:

    student.getDate().setD(20);

دستور student.getDate() شی date که در کلاس Student ساخته اید رو برمیگردونه که میتونید هر کاری بخواهید انجام بدید روش

:)
:)
@ERR

تخصص: اندروید - تازه کار

چرا از سازنده استفاده نمیکنید؟
در بالا با متد set هم میشه مقدار دهی کرد و مشکلی پیش نمیاد و نمیدونم شما چطور گفتید نمیشه! اما طولانی میشه
بهترین راه برای مقدار دهی اولیه در سازنده است.در کلاس Date یه سازنده درست کنید مانند زیر:

    public Date(int d, int m, int y) {
        D = d;
        M = m;
        Y = y;
    }

برای Student نیز سازنده بسازید مثل زیر

    public Student(String name, int id, Date date) {
        NAME = name;
        ID    = id;
        this.date = date;
    }

سپس در کلاس Main یه شی از کلاس Date بسازید ویکی از کلاس Student بسازید که در همون دستور میتوانید مقدار دهی کنید آنها را :

    Date  date       = new Date( 20, 1 , 1990);
    Student  student = new Student("Nima" , 1 , date);

یا به صورت زیر خلاصه میتونید در یک خط بنویسید:

    Student  student = new Student("Nima" , 1 , new Date( 20, 1 , 1990));

توجه:به روش استفاده از یک شی در کلاس دیگر روش ترکیب گفته میشود(مثل بالا که از شی date در Student استفاده کردیم)

آراد
آراد
@aradolfati

تخصص: دانشجو

@nimabandari27
ممنون ولی هیچ جوری نمیشه از طریق نمونه ای که از Student ساختیم به Date دسترسی داشت؟ یعنی چرا باید از Date داخل main نمونه بسازیم و اونجا بهش مقدار بدیم؟

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام