0

创建一个名为 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();
} 
}
4

2 回答 2

0

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

this.days = days;

到 LuxuryCarRental 构造函数,或者使用新参数更好的 CarRental 构造函数。

也不需要重命名您的 computetotal 方法,保留相同的名称;它的子对象将覆盖其父对象的实现细节。查看多态性:http ://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming

此外,缩进您的代码以使其更具可读性http://en.wikipedia.org/wiki/Indent_style

于 2013-03-29T21:48:36.843 回答
0

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

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

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);
}
于 2013-03-29T21:50:02.037 回答