2017-08-15 45 views
-5

我正在學習Java中的多級繼承,並且被困在下面的代碼中。但它顯示1錯誤。並且有沒有其他方法可以做到這一點。我可以在使用方法時進行繼承嗎?任何人都可以提供幫助嗎?提前。 這是錯誤:如何在下面的Java代碼中刪除多級繼承中的錯誤?

shoppingmain.java:27:錯誤:類B中的構造方法B不能應用於給定的類型; { ^ 要求:字符串,整數

發現:沒有參數

原因:實際的和正式的參數列表的長度不同

1錯誤

class A{ 
    int price; 
    String product; 
    } 

    class B extends A 
    { 
    int quantity; 
    int total; 
    B(String a,int b) 
    { 

    product=a; 
    price=b; 
    } 
    void productdetails() 
    { 
    System.out.println("The product name is"+product); 
    System.out.println("The price is"+price); 
    } 
    } 

    class C extends B 
    { 
    C(int c,int d) 
    {   //line 27 
    quantity=c; 
    total=d; 
    } 
    void productcost() 
    { 
    System.out.println("The quantity is"+quantity); 
    System.out.println("The total cost is"+total); 
    } 
    } 

    class shoppingmain 
    { 
    public static void main(String args[]) 
    { 

    B obj1=new B("pen",5); 
    C obj2=new C(2,10); 

    obj1.productdetails(); 
    obj2.productcost(); 
    } 
    } 
+4

請:a)本減少到[MCVE] b)對代碼進行格式化 - 目前全部都在這個地方; c)在問題中包含錯誤,而不是僅僅說「它顯示錯誤」; d)按照Java命名約定使示例儘可能容易閱讀; e)說出你想要達到的目標......你問「有沒有其他的方式可以做到這一點」而不用說「這個」是什麼。 –

+0

當你像@JonSkeet那樣說,B擴展A可能是壞設計(重複變量是誤解),並且打印方法也不好設計太 –

+0

除了@JonSkeet指出的內容,還請正確縮進代碼;閱讀「原樣」非常具有挑戰性。 – EJoshuaS

回答

0

正如你所宣佈父類中的構造函數以及從父到孩子創建每個對象的繼承工作,您需要指定參數來創建B對象,使用超級關鍵字在C:

public class C extends B 
{ 
    C(int c, int d) 
    { 
     super("Prueba", 1); 
     quantity = c; 
     total = d; 
    } 

    void productcost() 
    { 
     System.out.println("The quantity is" + quantity); 
     System.out.println("The total cost is" + total); 
    } 
} 
0

我認爲這是你正在嘗試做的:

package javaapplication20; 

public class JavaApplication20 { 

    public static void main(String[] args)     
    { 
     B obj1 = new B("pen",5); 
     C obj2 = new C(2,10); 
     obj1.productdetails(); 
     obj2.productcost();   
    } 
} 

class A{ 
    int price; 
    String product; 
} 

class B extends A 
{ 
    int quantity; 
    int total; 

    B() { 

    } 

    B(int q, int t) { 
     quantity = q; 
     total = t; 
    } 

    B(String a,int b) 
    { 
     product=a; 
     price=b; 
    } 

    void productdetails() 
    { 
    System.out.println("The product name is "+product); 
    System.out.println("The price is "+price); 
    } 
} 

class C extends B 
{ 
    C(int h,int j) { 
     quantity = h; 
     total = j; 
    } 
    void productcost() 
    { 
     System.out.println("The quantity is "+quantity); 
     System.out.println("The total cost is "+total); 
    } 
} 
+0

編輯:這更接近您開始使用的內容。 – Charles