我有一个产品。我使用的是前一类,因为先前和现在之间的唯一区别是,如果订单数量超过10个单位,可以选择10%的折扣(浮点数0.1),可以乘以价格。
我使用DisountedProduct作为继承类扩展了Product类,但是当我从父类调用构造函数时,我得到错误"无效的方法声明,需要返回类型。"
我已经阅读了java继承的解释,但它没有提到这一点。
请帮忙
public class DiscountedProduct extends Product {
private float discount;
private String name;
private double price;
private int quantity;
public Product(String name, double price, int quantity){
this.name = name;
this.price = price;
this.quantity = quantity;
}
//Get//
public float getDiscount(){
return discount;
}
//Set//
public void setDiscount(float value){
this.discount = value;
}
}
public class Product {
private String name;
private double price;
private int quantity;
public Product(String name, double price, int quantity){
this.name = name;
this.price = price;
this.quantity = quantity;
}
//Get Methods//
public String getName(){
return name;
}
public double getPrice(){
return price;
}
public int getQuantity(){
return quantity;
}
public double getTotalPrice(){
return quantity * price;
}
//Set Methods//
public void setName(String value){
this.name = value;
}
public void setPrice(double value){
this.price = value;
}
public void setQuantity(int value){
this.quantity = value;
}
}
答案 0 :(得分:6)
在DiscountedProduct
中,替换
public Product(String name, double price, int quantity)
与
public DiscountedProduct(String name, double price, int quantity)
你有错误类的构造函数
此外,您不需要在DiscountedProduct
构造函数中设置所有变量,只需调用超级构造函数;用
public DiscountedProduct(String name, double price, int quantity) {
super(name, price, quantity);
}
答案 1 :(得分:0)
DiscountedProduct
课程中的构造函数应为DiscountedProduct
而不是Product
。
此外,DiscountedProduct
不应定义已在父项中定义的字段,构造函数应调用super(name, price, quantity)
而不是初始化字段本身。
答案 2 :(得分:0)
您的Product类设置正常 - 问题似乎出现在DiscountedProduct类的构造函数中。 DiscountedProduct类的构造函数应与类名称相同:DiscountedProduct。此外,name
和price
等对象参数已由父类Product定义。 super()
方法调用Product类构造函数。您需要调用super()
方法并将用于实例化DiscountedProduct的值传递给它。
public DiscountedProduct(String name, double price, int quantity){
super(name, price, quantity);
}
固定构造函数应该与上面的块类似。在我的机器上没有问题。
如果您希望DiscountedProduct具有其父类没有的参数,您可以在其构造函数中定义它并传入相应的参数,如下所示:
public DiscountedProduct(String name, double price, int quantity, float defaultDiscount){
super(name, price, quantity);
this.discount = defaultDiscount;
}