سلام دوستان
من دو تا کلاس در داخل جاوا تعریف کردم
کلاس 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 مقدار دهی کنم!!
چرا میشه
مثل زیر:
student.getDate().setD(20);
دستور student.getDate() شی date که در کلاس Student ساخته اید رو برمیگردونه که میتونید هر کاری بخواهید انجام بدید روش
چرا از سازنده استفاده نمیکنید؟
در بالا با متد 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 استفاده کردیم)
@nimabandari27
ممنون ولی هیچ جوری نمیشه از طریق نمونه ای که از Student ساختیم به Date دسترسی داشت؟ یعنی چرا باید از Date داخل main نمونه بسازیم و اونجا بهش مقدار بدیم؟
چرا میشه
مثل زیر:
student.getDate().setD(20);
دستور student.getDate() شی date که در کلاس Student ساخته اید رو برمیگردونه که میتونید هر کاری بخواهید انجام بدید روش
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟