需要Java继承方面的帮助!(在LuxuryCarRental int中,天数始终为0)

需要Java继承方面的帮助!(在LuxuryCarRental int中,天数始终为0),java,inheritance,Java,Inheritance,创建一个名为CarRental的类,该类包含包含租车者姓名、邮政编码、租车大小、每日租车费、租车天数和总租车费的字段。该类包含一个构造函数,该构造函数要求所有租赁数据都接受每日费率和总费用,这些费用是根据汽车大小计算的:经济型为每天29.99美元,中型为每天38.99美元,全尺寸为每天43.50美元。该类还包括一个display()方法,用于显示所有租赁数据 创建一个名为LuxuryCarRental的子类。该课程将租金设置为每天79.99美元,并提示用户响应包括司机在内的选项,即每天增加200

创建一个名为CarRental的类,该类包含包含租车者姓名、邮政编码、租车大小、每日租车费、租车天数和总租车费的字段。该类包含一个构造函数,该构造函数要求所有租赁数据都接受每日费率和总费用,这些费用是根据汽车大小计算的:经济型为每天29.99美元,中型为每天38.99美元,全尺寸为每天43.50美元。该类还包括一个display()方法,用于显示所有租赁数据

创建一个名为LuxuryCarRental的子类。该课程将租金设置为每天79.99美元,并提示用户响应包括司机在内的选项,即每天增加200美元。重写父类display()方法以包含司机费信息。编写一个名为UseCarRental的应用程序,提示用户输入租赁所需的数据,并创建正确类型的对象。显示总租金

将文件另存为CarRental。爪哇,豪华公寓。java和UseCarRental。爪哇

public class CarRental
{
String name;
int zip;
String size;
double dailyFee;
int days;
double total;

public CarRental(String size)
{

if(size.charAt(0)=='e')
  dailyFee = 29.99;
else if(size.charAt(0)=='m')
  dailyFee = 38.99;
else
  dailyFee =43.50;
}
public String getname()
{
  return name;
}
public int getzip()
{
  return zip;
}
public String getsize()
{
return size;
}
public int getdays()
{
  return days;
}
public void computetotal(int days)
{
total = dailyFee*days;
}
public void print()
{
System.out.println("The cost of your rental car is $" + total);
}
} 






public class LuxuryCarRental extends CarRental
{
public LuxuryCarRental(String size, int days)
{
super(size);
}
public void computetotal1()
{
super.computetotal(days);
dailyFee = 79.99;
 total = dailyFee;
System.out.println(days);    //trying to see if days still 0
}
}






import javax.swing.*;
import java.util.Scanner;
public class UseCarRental
{
public static void main(String args[]) throws Exception
{
int days;
String name;
int zip;
String size;
Scanner inputDevice = new Scanner(System.in);
System.out.println("Enter days: ");
days= inputDevice.nextInt();
System.out.println("Enter name: ");
name = inputDevice.next();
System.out.println("Enter zip: ");
zip = inputDevice.nextInt();
System.out.println("Enter size: ");
size = inputDevice.next();
CarRental econ = new CarRental(size);
econ.computetotal(days);
econ.print();
CarPhone full = new CarPhone(size, days);
full.computetotal1();
full.print();
} 
}

对于LuxuryCarRental中的days,您没有做任何事情,您的构造函数将其作为参数,但对其不做任何操作。理想情况下,它应该传递给CarRental对象构造函数,但在任何情况下,都应该添加

this.days = days;
到LuxuryCarRental构造函数,或者更好地使用新参数创建CarRental构造函数

也不需要重命名computetotal方法,请使用相同的名称;它表示子对象将覆盖其父对象的实现详细信息。注意多态性:


另外,缩进代码以使其更具可读性

这两个类中的任何地方都没有初始化days,这就是getdays返回0的原因。请在访问它之前初始化天

在CarRental类的构造函数中,将天作为参数,如下所示:

public CarRental(String size, int days)
{

   if(size.charAt(0)=='e')
      dailyFee = 29.99;
   else if(size.charAt(0)=='m')
      dailyFee = 38.99;
   else
      dailyFee =43.50;
   this.days = days;
}
在LuxuryCarRental的构造函数中,执行以下操作:

public LuxuryCarRental(String size, int days)
{
   super(size, days);
}

非常感谢大家!!!现在我明白了!我知道有很多事情要做,但现在我得到了时间(继承的),所以我可以完成工作!!再次非常感谢!