簡體   English   中英

如何訪問位於另一個對象內部的對象數組,該對象然后位於超類數組內部?

[英]How can I access an object array located inside of another object which is then inside a superclass array?

我有一個抽象類Employee ,並在此基礎上創建了以下子類:

FulltimeEmployee
PartTimeEmployee
Salesman

以及一個獨立的類Orders

我使用Orders類通過在Salesman構造函數中發送訂單數組來“描述銷售員”:

public Salesman(String firstname, String lastname,int code, String address,
                String city,int tk,int phone,String email,int deptcode,int card,
                double hours,String cat,int orderno,double salary,
                Orders[] order){
 super(  firstname, lastname, code,  address, city, tk, phone, email, deptcode,
         card, hours, cat );
 this.orderno=orderno;

 setBaseSalary( salary );
 getSalary(orders);
 /////////////////

 }

后來,我使用該數組來計算推銷員所獲得的獎金,具體取決於他的銷售額。

main ,我創建了一個Employee類型的數組:

Employee employees[] = new Employee[ 7 ];
   employees[ 0 ] = salary1;
   employees[ 1 ] = salary2;
   employees[ 2 ] = salary3;
   employees[ 3 ] = partt1;
   employees[ 4 ] = partt2;
   employees[ 5 ] = sales1;
   employees[ 6 ] = sales;

其中每一行都是不同類型的員工(工資=全職,partt =兼職,而sales =業務員)。

我的問題是我想使用employees數組打印每個銷售員的訂單。 到目前為止,我所做的是

for (int i=5;i<employees.length;i++){
              System.out.printf("Orders of Salesman: %S %S",
                  employees[i].getName(),employees[i].getSurname());
              System.out.printf(" Total amount(money) from orders: %,.0f ",
                  employees[i].earnings());
              int j=0;
              ((Salesman)employees[i]).getOrderNo(arr) ;
              //((Orders)employees[i]).getOrderNo();
              System.out.printf("ordernumber: %d  orderdate:%s  description: %s
                  order amount(money): %,.0f\n ");

           }

問題來了:

System.out.printf("ordernumber: %d orderdate:%s description: %s order amount(money): %,.0f\\n ");

如何訪問employee數組上Salesman對象內部的order數組? 我已經嘗試過強制轉換,但由於Orders不是Employee的子類,因此無法正常工作。

例如,我需要它來打印,

推銷員訂單:約翰·庫恩

訂單總數:每個銷售員13000個訂單

訂單號:1訂單日期:10/2/2010說明:機械銷售訂單金額:12000

訂單號:2訂單日期:20/2/2010說明:零件銷售訂單金額:1000

您的Salesman構造函數接受Order[]訂單,但它看起來好像沒有在任何地方保留對其的引用(除非您在getSalary或注釋掉的部分中進行了引用)。

您將需要添加類似

this.orders = orders;

Salesman構造函數中,因此您可以將數組引用為Salesman對象的字段/屬性。

通常,您應該使用Bean模式,其中每個字段都有一個getter / setter方法:

public Order[] getOrders(){
    return orders;
}

public void setOrders(Order[] orders){
    this.orders=orders;
}

然后在構造函數中添加setOrders(orders);

然后在您的調試/輸出代碼中添加:

Salesman salesman = (Salesman) employees[i];
for (Order order : salesman.getOrders())
    System.out.println(order); // i don't know what fields order has!

如果您要說的是您有一個Employee數組,並且每個Salesman (僅)有一個成員來提供自己已售出的訂單,那么您必須使用一個數組數組。

乍一看,您的Employee數組更可能是一個向量,即一維數組。 另外,您的Salesman類具有一個Order數組,這似乎也是一個向量。 如果這是你實際得到的,你只需要通過你的迭代Salesman.Orders成員,讓您的銷售Salesman做到了。

由於它被標記為[homework] ,因此我拒絕編寫代碼,並為您准備全部內容。

此外,這里有一些提示:

  1. 您已經遍歷了Employee數組,因此您知道如何遍歷一個Employee

  2. 您說一個SalesmanEmployee類派生的,因此使Employee可能是類型可鑄型到Salesman ,然后您將獲得Salesman類的實例,該實際EmployeeSalesman ,否則應返回null;

  3. 現在,您可以通過屬性方法(getter和setter方法)訪問字段;

因此,如何使Orders可以從類外部訪問,並將其公開為數組?

如果您能夠將其公開為數組,如何遍歷數組以獲取每個訂單金額,以便可以計算出此Salesman實例的銷售量?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM