Java...

Archer Inc

New member
Java...

יש לי שני מצביעים לעצם מסוג מסויים. כיצד אני מציב את תוכן העצם אליו מצביע הראשון בתור העצם אליו מצביע השני? כוונתי איננה ששני המצביעים יצביעו לאותו עצם, כפי שיקרה אם אכתוב pointer2=pointer1; אלא שיווצר עצם חדש, זהה לראשון, אליו יצביע המצביע השני.
 

Archer Inc

New member
ושאלה אחרת...

בקוד הבא כתוב לי שאין פונקציה בשם raise_sal כשאני מנסה להשתמש בה ב-init_workers. מה הבעיה?
public class WorkerApp { Worker marketing[] = new Worker[5]; Worker engineering[] = new Worker[4]; Worker office[] = new Worker[3]; Manager managers[] = new Manager[2]; President president; void init_workers() { int i,j; for(i=0; i<marketing.length; i++) { marketing = new Worker("W" + i, i, (i+1)*1000); } for(j=0; j<engineering.length; j++, i++) { engineering[j] = new Worker("W" + i, i, (j+1)*1000); } for(j=0; j<(office.length-1); j++, i++) { office[j] = new Worker("W" + i, i, (j+1)*1000); } office[2] = new Consultant("C", 12, 12, 12); office[0].raise_sal(); } void init_managers() { Manager marketing_mgr = new Manager("M1", 101, 30000, marketing); Manager engineering_mgr = new Manager("M2", 102, 20000, engineering); //marketing_mgr.print(); //engineering_mgr.print(); managers[0] = marketing_mgr; managers[1] = engineering_mgr; } void init_president() { president = new President("P1", 1001, 100000, office, managers); } void print_test() { managers[0].print(); managers[1].print(); president.print(); } void pollymorphism_test() { Worker all[] = new Worker[100]; int len = 0; System.arraycopy(marketing, 0, all, len , marketing.length); len += engineering.length; System.arraycopy(engineering, 0, all, marketing.length , len); len += engineering.length; System.arraycopy(office, 0, all, len, office.length); len += office.length; System.arraycopy(managers, 0, all, len, managers.length); len += managers.length; all[len++] = president; for(int i=0; i<len; i++) all.print(); } public static void main (String[] args) { WorkerApp app = new WorkerApp(); app.init_workers(); app.init_managers(); app.init_president(); //app.print_test(); app.pollymorphism_test(); } } class Worker { String name; int ID; float salary; public Worker(String n, int id, float sal) { name = n; ID = id; salary = sal; } public void raise_sal()
 

Archer Inc

New member
המשך...

class Worker { String name; int ID; float salary; public Worker(String n, int id, float sal) { name = n; ID = id; salary = sal; } public void raise_sal() { salary+=100; } public void print() { System.out.print(name + ", "); System.out.println("ID = " + ID + ", salary = " + salary); } } class Consultant extends Worker { int hours; public Consultant(String n, int id, float sal, int h) { super(n, id, sal); hours=h; } public void print() { super.print(); System.out.println(hours); } } class Manager extends Worker { Worker[] worker_list = new Worker[10]; public Manager(String n, int id, float sal, Worker[] wlist) { super(n,id,sal); // call worker constructor worker_list = wlist; } public void print() { super.print(); // call Worker.print System.out.println("Worker list:"); for(int i=0; i<worker_list.length; i++) { System.out.print("\t"); worker_list.print(); } System.out.println(); } } class President extends Manager { Manager[] manager_list = new Manager[10]; public President(String n, int id, float sal, Worker[] wlist, Manager[] mlist) { super(n,id,sal, wlist); // call Manager constructor manager_list = mlist; } public void print() { super.print(); // call President.print System.out.println("Manager list:"); for(int i=0; i<manager_list.length; i++) { manager_list.print(); } System.out.println(); } }
 

Archer Inc

New member
מצטער, השפעת הספר המרושע שלי...

שמתרגם את המילה Reference כמצביע.
 

zagzagzag

New member
clone

המתודה הזו מופיעה במחלקה Object (מה שאומר שאתה יכול להשתמש בה בכל אובייקט) שים לב שבברירת מחדל אין לה מימוש, ואתה חייב לממש אותה על מחלקות שלך או שתקבל exception פרטים נוספים כאן
 
למעלה