当前位置: 首页 > 知识库问答 >
问题:

Java继承豪华汽车租赁

贺子昂
2023-03-14

我正在做下面的家庭作业(我对Java还是个新手……),我对写LuxuryCarRental有一些疑问……我不确定我在CarRentall的工作是否正确。我还没有到UseCarRental。

创建一个名为 CarRental 的类,其中包含以下字段:租用者姓名、邮政编码、汽车大小、租车费、天数出租和总计出租费。

该类包含一个构造函数,它需要除总费用以外的所有租金数据,总费用根据汽车的大小计算:经济型为29.99美元/天,中型为38.99美元/日,全尺寸为43.50美元/天。该类还包括一个显示所有租赁数据的display()方法。

创建一个名为LuxuryCarrent的子类。该类将租赁费设置为每天79.99美元。

编写一个名为UseCarRental的应用程序,提示用户输入租车者的姓名、邮政编码、要租车的大小以及他们想租的天数。

您的应用程序应显示总租赁费用。

确保您的应用程序同时测试CarRental和LuxuryCarRentall。

租车:https://pastebin.com/fq1wJF1s豪华租车:https://pastebin.com/xBAK6NTy

package usecarrental;

public class CarRental 
{
    private String renterName = "";
    private int rentalZipCode = 00000;
    private String rentalCarSize = "";
    private double rentalFeeDaily;
    private int numDaysRented = 0;
    private double totalRentalFee;
    
    public CarRental(String name, int zipcode, int days, String carsize)
    {
        renterName = name;
        rentalZipCode = zipcode;
        rentalCarSize = carsize;
        numDaysRented = days;
    }
    
    public void setrenterName(String name)
    {
        renterName = name;
    }
    
    public void setrentalZipCode(int zipcode)
    {
        rentalZipCode = zipcode;
    }
    
    public void setrentalCarSize(String carsize)
    {
        rentalCarSize = carsize;
    }
    
    public void setnumDaysRented(int days)
    {
        numDaysRented = days;
    }
    
    html" target="_blank">public String getrenterName()
    {
        return renterName;
    }
    
    public int getrentalZipCode()
    {
        return rentalZipCode;
    }
    
    public String getrentalCarSize()
    {
        return rentalCarSize;
    }
    
    public int getnumDaysRented()
    {
        return numDaysRented;
    }
    
    public double gettotalRentalFee()
    {
        return numDaysRented * rentalFeeDaily;
    }
    
    public double getrentalFeeDaily(String rentalCarSize)
    {
        switch (rentalCarSize)
        {
            case "Economy":
                rentalFeeDaily = 29.99;
                break;
            case "Midsize":
                rentalFeeDaily = 38.99;
                break;
            case "Fullsize":
                rentalFeeDaily = 43.50;
                break;
        }
            return rentalFeeDaily;
    }
    
    public void display()
    {
        System.out.println(
                "Customer Details" +
                "\nName          = " + getrenterName() +
                "\nZipcode       = " + rentalZipCode +
                "\nCar Size      = " + getrentalCarSize() +
                "\nRental Fee    = " + rentalFeeDaily + "/daily" +
                "\nRental Length = " + numDaysRented +
                "\nTotal Fee     + " + totalRentalFee
        );
    }
    
}


package usecarrental;

public class LuxuryCarRental extends CarRental
{
    public LuxuryCarRental(String carsize, int days)
    {
        super(carsize, days);
    }
    
    public void computetotal1()
            {
                super.computetotal(days);
                rentalFeeDaily = 79.99;
                totalRentalFee = rentalFeeDaily;
            }
}

共有1个答案

咸承教
2023-03-14

属性和类常量:

首先,您不必在创建类属性时为其赋值。为此,请使用构造函数。

其次,这些属性应该受到保护,因为< code > luxury currental 类将在以后继承它们。

您不需要< code>rentalFeeDaily和< code>totalRentalFee属性。

属性变成了

protected String renterName;
protected int rentalZipCode;
protected String rentalCarSize;
protected int numDaysRented;

您可以从< code>getRentalFeeDaily()方法获取< code>rentalFeeDaily,从< code>totalRentalFee()方法获取< code>totalRentalFee。

然后把它们放在 display() 方法中:

public void display()
    {
        System.out.println(
                "Customer Details" +
                "\nName          = " + getrenterName() +
                "\nZipcode       = " + rentalZipCode +
                "\nCar Size      = " + getrentalCarSize() +
                "\nRental Fee    = " + getRentalFeeDaily + "/daily" +
                "\nRental Length = " + numDaysRented +
                "\nTotal Fee     + " + totalRentalFee
        );
    }

更好的做法是将您在类中使用的常数作为类常数。

public static final double ECONOMY_FEE = 29.99;
public static final double MIDSIZE_FEE = 38.99;
public static final double FULLSIZE_FEE = 43.50;
public static final double LUXURY_FEE = 79.99;

在您的getRentalFeeDaily()中:

public double getRentalFeeDaily() {
        double rentalFeeDaily = 0;
        switch (rentalCarSize) {
        case "Economy":
            rentalFeeDaily = ECONOMY_FEE;
            break;
        case "Midsize":
            rentalFeeDaily = MIDSIZE_FEE;
            break;
        case "Fullsize":
            rentalFeeDaily = FULLSIZE_FEE;
            break;
        case "Luxury":
            rentalFeeDaily = LUXURY_FEE;

        }
        return rentalFeeDaily;
    }

为什么要给您的getRentalFeeDaily()方法一个String参数?您的rentalCarSize是类中的一个属性,您可以将其用于访问此方法的对象实例。

豪华汽车租赁类

豪华汽车租赁是一种CarRental

您不需要为LuxuryCarrent类添加任何其他属性。

public class LuxuryCarRental extends CarRental {

    public LuxuryCarRental(String name, int zipcode, int days) {
        super(name, zipcode, days, "Luxury");
    }

}

在创建LuxuryCarrent对象时,您也不必给出rentalCarSize字符串,因为您将自己将其作为“Luxury”提供给超类构造函数。

因此,稍后当您稍后创建豪华汽车出租对象并希望计算其总费用价格时:

  1. 构造器将“Luxury”作为retalCarSize属性
  2. 该字符串将被赋予超类中的方法
  3. 该方法将使用“luxury”属性从getRentalFeeDaily()获取豪华车费用后返回总费用

使用汽车租赁类

public class UseCarRental {
    public static void main(String[] args) {
        CarRental cr = new CarRental("Honda", 1234, 10, "Economy");
        LuxuryCarRental lcr = new LuxuryCarRental("Jaguar", 5678, 10);

        System.out.println(cr.totalRentalFee());
        System.out.println(lcr.totalRentalFee());

    }
}

这应该足够了。

 类似资料:
  • 背景:当你从中介公司租车时,钥匙圈上有几条信息:车牌、品牌和年份,通常还有一个特殊的代码。该代码可用于公司计算机内的某些数据处理。本实验室将练习从车牌中确定特殊的租车代码。 工作分配: 以下步骤序列将用于将示例车牌转换为汽车租赁代码。 a、 车牌由3个字母后跟一个空格,再后跟一个3位整数组成。例如,CPR 607。 b、 将3个字母的ASCII值相加,67 80 82=229。 c.将字母之和加到

  • 电话面,周一上午给我打电话约的周二下午 面试官拷打的挺多的,我还是第一次遇到这么不温柔的面试官 问题一个接着一个的抛 我太菜了给我问蒙了都 对深蓝汽车了解吗 接受工作地点在重庆吗 ==和equals的区别 Integer a=200和Integer b=200用equals比较和用==比较分别是true还是false等等一系列(接连拷打) 迭代器模式,为啥不用for循环 工厂模式和抽象工厂模式 r

  • 本文向大家介绍C#实现简单的汽车租赁系统,包括了C#实现简单的汽车租赁系统的使用技巧和注意事项,需要的朋友参考一下 最近学习了继承,多态,集合,设计模式,有一个汽车租凭系统,给大家分享一下: 我们首先来看看我们这个系统的效果 1.做一个项目,我们首先对项目进行分析 根据我们最近学的知识,我们可以看出继承,多态,集合,设计模式,我们都能用到 我们把所需要的类和简单模式中的“简单工厂”的工厂准备好  

  • 上正文: 1. == equals (√) 2.出题:Integer a = 100,Integer b = 100.....balabala.....就是一些Integer和int这些的比较,equals,==(答上来了,但是他问我为啥。我说是equals比较的是值,他问我为啥。说实话我很懵逼。下来复盘的时候才get应该是想问我拆箱装箱,Integercache...其实是想到了但是没敢说) 3

  • 问题内容: 假设Java具有以下层次结构类: 这是C#中相同代码的(盲)重复: 当我执行Java代码时,我得到了C#返回的信息。 对我来说,C#的结果更有意义,因为引用B调用了它自己的方法。 Java设计者决定打印而不是打印的逻辑是什么?我的意思是,为什么引用B在C中使用覆盖方法?这种方法的优势是什么? 如何更改Java代码以像C#一样打印出来?我的意思是,我怎么教Java调用它使用的完全引用的方

  • 本小节我们将学习 Java 的继承,通过本小节的学习,你将知道什么是继承,继承有什么特点,如何实现继承,方法重写的概念和实现,方法重写和方法重载是比较容易混淆的概念,我们也会介绍两个概念的区别,这些都是本小节的重点,本小节的最后我们还会介绍 super 关键字以及 final 关键字。 1. 概念和特点 1.1 概念 继承是面向对象软件技术当中的一个概念。如果一个类别 B “继承自” 另一个类别