我試圖解決這個問題,但我真的不明白的語法。 考慮下面的代碼:JAVA:如何調用一個對象的子類中的方法?
class Parent {
private String productCode1; // Format X9999
private String productCode2;
public Parent(String productCode1, String productCode2)
{
this.productCode1= productCode1;
this.productCode2= productCode2;
}
}
然後我有一個子類至極包含下面的方法我想打電話給
public Child extends Parent{
private String[] serialNumbers;
public Child(String productCode1, String productCode2, String... args){
super(productCode1, productCode2,);
int i = 0;
for(String serialN: args){
serialNumbers = new String[10];
serialNumbers[i]= serialN;
i++;
}
public String[] getSerialNumbers(){ //This is the method i want to call
return this.serialNumbers;
}
}
這是庫存類
public class Inventory{
public ArrayList<Parent> products;
public Inventory(){
products = new ArrayList<Parent>(); //Some hard coded items
products.add(new Parent("A0001", "abcdefg"));
products.add(new Parent("B0010", "abcdefg"));
products.add(new Parent("C0100", "abcdefg"));
products.add(new Child("D1000", "abcdefg", "firstSN", "secondSN", "thirdSN"));
}
public static ProductLine getProduct(ArrayList<Parent> products, String productCode){
for(int i = 0; i < products.size(); i++){
ProductLine product = products.get(i);
if(product.getProductCode().equals(productCode)){
return product;
}
}
return null;
}
現在在主類我需要執行檢查,如果該對象是一個父對象或子對象做,我想獲得序列號,如果我得到一個它意味着是一個孩子,否則是父母。
唯一的問題我想要使用getserialNumbers(),這是在子類
public Application{
String inputProductCode = keyboard.nextLine(); //Input product code from user
Inventory inventory = new Inventory();
ProductLine pFound = inventory.getProduct(inventory.products, inputProductCode); //check if is Child item
String[] serNumb = pFound.getSerialNumbers(); //Here is where i get Error cannot find symbol/method getSerialNumbers
if(serNumb[0] == null){
// code continue...
}
我試着投,如:
String[] serNumb = ((ItemisedProductLine)pFound).getSerialNumbers();
它編譯但他trows(如預計)在運行時,我是「父母不能投給孩子」。
我希望我解釋好 對不起長的問題...
getSerialNumbers()返回一個在子類和父對象中不存在序列號的序列號數組。 –
您可以在'Parent'中使用'getSerialNumbers()',總是返回一個長度爲零的數組。 – QuantumMechanic