آراد
3 سال پیش توسط آراد مطرح شد
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 مقدار دهی کنم!!


ثبت پرسش جدید
:)
تخصص : اندروید - تازه کار
@ERR 3 سال پیش آپدیت شد
0

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

    student.getDate().setD(20);

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


:)
تخصص : اندروید - تازه کار
@ERR 3 سال پیش آپدیت شد
0

چرا از سازنده استفاده نمیکنید؟
در بالا با متد 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 3 سال پیش مطرح شد
0

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


:)
تخصص : اندروید - تازه کار
@ERR 3 سال پیش آپدیت شد
0

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

    student.getDate().setD(20);

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


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

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