我有错误"找不到符号"并指我创建我试图在我的子类中的超类中使用的变量,即使我将变量设置为public。我的这个代码的目标是在我的子类中采用两个参数:" productName"和"数量"并将它们传递给我的超类并将它们分配给相关的变量。我还需要传递" DISCOUNT"的价值。到超类变量"折扣"。
非常感谢任何有关此问题的帮助。
我的超类代码包含变量和相关的构造函数,如下所示。
public class Order1 {
public String productName;
private double price;
public int discount;
public int quantity;
private double total;
private String message;
private boolean isDiscounted;
private boolean isValidOrder;
private static int orderNum = 0
public Order1() {
// sets validity to false, sets message, increments orderNum by 1
isValidOrder = false;
message = "**ERROR**: Order number cannot be totalled as no details have been supplied";
orderNum = orderNum + 1;
}
public final void Order1(String productName, int quantity) {
// sets productName variable to productName parameter value
this.productName = productName;
testQuantity(quantity);
}
public Order1(String productName) {
// sets productName variable to productName parameter value
this.productName = productName;
}
以下代码是我的子类
package Order;
/**
*
* @author Aurya
*/
public class InternalOrder extends Order1 {
private final static double DISCOUNT;
public InternalOrder(double DISCOUNT) {
super(productName, quantity, discount);
DISCOUNT = .40;
this.discount = DISCOUNT;
this.productName = productName;
this.quantity = quantity;
}
}
亲切的问候
答案 0 :(得分:1)
super(productName,quantity,discount);
是错误的,因为它想调用一个带有3个参数的构造函数,这些参数在Order1中不存在。摆脱“折扣”
DISCOUNT = .40;
没有意义。您修改构造函数参数(已经很奇怪),甚至在获取其值之前。
this.productName = productName; this.quantity = quantity;
“this”没用,因为函数中没有其他具有相同名称的变量。所以实际上你正在做“productName = productName;”和“数量=数量;”。如果正确使用“超级”,它们将毫无用处。
答案 1 :(得分:0)
你没有一个带有3个参数的Order1
构造函数。
您试图调用类Order1
中不存在的构造函数。在Order1
类中创建一个三参数构造函数:
public Order1(productName, quantity, discount)
答案 2 :(得分:0)
上面的答案已经在构造函数中指出了你的问题。如果我正确理解您的代码,您希望对所有内部订单应用固定折扣(40%)。
首先,您可以直接在构造函数中为balance = int(input("Enter initial balance: $ "))
count = 1
total =0
while count <= 11:
n = int(input("Enter deposit %s #: " %(count)))
count += 1
total += n #keep on adding deposit amounts.
print("Original price: $ %d" %balance)
print("Final Amount: $ %d" %(total + balance) )
变量赋值。
balance = int(input("Enter initial balance: $ "))
for i in range(11):
n = int(input("Enter deposit #: %s " %(i)))
total +=n
print("Original price: $ %d" %balance)
print("Final Amount: $ %d" %(total + balance) )
其次,如果您希望子类可以访问超类变量,则最好使用discount
而不是this.discount = 0.4;
。
您的protected
课程应该如下所示:
public