繁体   English   中英

Java:构造函数和参数列表错误

[英]Java: constructor and argument list error

我有这个问题:

我正在尝试编译:

public class Agora extends CreditCardPayment {

public void run() {

CashPayment ad1 = new CashPayment(12f);
ad1.paymentDetails();

CashPayment ad2 = new CashPayment(156.4f);
ad2.paymentDetails();

int cardnum1 = 1253462136;
CreditCardPayment ad3 = new CreditCardPayment(325.99f , "Visa" , "12/1/2015" , cardnum1);
ad3.paymentDetails();

int cardnum2 = 1235623151;
CreditCardPayment ad4 = new CreditCardPayment(999.99f , "Master" , "25/6/2016" , cardnum2);
ad4.paymentDetails();
 }
}

但它一直给我这个错误:

Agora.java:3:错误:CreditCardPayment类中的构造函数CreditCardPayment无法应用于给定类型; 公共类Agora扩展了CreditCardPayment {

必需:float,String,String,int找到:没有参数原因:实际参数和正式参数列表的长度不同

这是CreditCardPayment类:

public class CreditCardPayment extends Payment{

public CreditCardPayment(float x ,String name , String exp_date , int card_num) {
 super (x);
 Card_name = name;
 Expiration_date = exp_date;
 Card_number = card_num;
 }

public String paymentDetails() {
  return super.paymentDetails() + "Card's name :" + Card_name + " , Expiration Date :" + Expiration_date + " , Card Number :" + Card_number ;
  }

  private String Card_name;
  private String Expiration_date;
  private int Card_number;
  }

我是计算机科学专业的学生,​​现在还不了解,所以如果这只是一个愚蠢的错误,但是我找不到它,请原谅。 任何帮助将不胜感激 !

基于@clcto的注释:Java为类提供了无参数的默认构造函数, 除非您指定一个或多个其他构造函数。 您已经为CreditCardPayment提供了构造函数,因此此类没有no-arg构造函数。

尚未Agora提供构造函数,因此默认行为是假定使用无参数构造函数,就像您编写的一样。

public Agora() {
    super();
}

但是对于超类( CreditCardPayment )没有no-arg构造函数,因此失败。

由于某种原因,您正在将Agora类创建为CreditCardPayment的子类。 因为尚未为Agora提供构造函数,所以编译器将提供默认构造函数,编译器将尝试为超类CreditCardPayment()调用默认构造函数。 但是不存在这样的构造函数。 CreditCardPayment的唯一构造函数采用4个参数。 那解释了编译器错误。

您的Agora类似乎使用CreditCardPayment 它本身不是CreditCardPayment 关系是“用途”,而不是“是”。 Agora使用CreditCardPayment ,但Agora不是CreditCardPayment

我将在您的Agora类定义中删除extends CreditCardPayment子句; 它不是必需的,它不应该在那里。

public class Agora {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM