toString()方法不是从其超类继承的

嘛。

我正在执行具有以下课程的任务:

  1. Vehicle.java (抽象类)
  2. NewVehicle.java 的子类 Vehicle.java
  3. UsedVehicle.java 的子类 Vehicle.java
  4. VehicleParser.java 用作解析器
  5. Drive 用作主类

VehicleParser课堂上,我确定它是哪个对象。它是一个NewVehicle对象还是一个对象UsedVehicleDrive课堂上,我ArrayListVehicle对象填充

现在,当我试图System.out.println一个Arraylist驱动类只是调用toString方法宣告UsedVehicle/NewVehicle而不是调用方法的声明Vehicle.java类。我需要它来首先调用toStringVehicle的方法,然后用它toString来连接UsedVehicle/ NewVehicle

这是代码:

车辆

public abstract class Vehicle {

    protected String make;
    protected int modelYear;
    protected String motivePower;
    protected double licenseFee;

    public Vehicle(String make,int modeYear,String motivePower) {
        this.make = make;
        this.modelYear= modeYear;
        this.motivePower = motivePower;
        this.licenseFee = 0.0;
    }

    public String getMake() {
        return make;
    }

    public void setMake(String make) {
        this.make = make;
    }

    public int getModelYear() {
        return modelYear;
    }

    public void setModelYear(int modelYear) {
        this.modelYear = modelYear;
    }

    public String getMotivePower() {
        return motivePower;
    }

    public void setMotivePower(String motivePower) {
        this.motivePower = motivePower;
    }

    public double getLicenseFee() {
        return licenseFee;
    }

    public void setLicenseFee(double licenseFee) {
        this.licenseFee = licenseFee;
    }

    public abstract void computeLicenseFee();

    public String toString()
    {
        return "\nMake:\t\t"+getMake()+
                "\nModel Year:\t"+getModelYear()+
                "\n Motive Power:\t"+getMotivePower()+
                "\nLicense Fee:\t"+getLicenseFee();
    }

    public static class UsedVehicle extends Vehicle
    {
        public String previousLicenseState;
        public int currentYear;
        int yearsOld = 0;

        public UsedVehicle(String make, int modelYear, String power, String previousState, int currentYear)
        {
            super(make,modelYear,power);
            this.previousLicenseState = previousState;
            this.currentYear = currentYear;
        }


        public String getPreviousLicenseState() {
            return previousLicenseState;
        }


        public void setPreviousLicenseState(String previousLicenseState) {
            this.previousLicenseState = previousLicenseState;
        }


        public int getCurrentYear() {
            return currentYear;
        }


        public void setCurrentYear(int currentYear) {
            this.currentYear = currentYear;
        }


        public void computeLicenseFee() {
            double baseFee = 100.00;
            double titleTransferFee = 15.00;
            double smogWaiverFee = 0.00;
            double smogAbatement = 0.00;

            yearsOld = getCurrentYear() - getModelYear();
            if(yearsOld > 5)
            {
                smogWaiverFee = 8.00;
            }

            if("gas".equalsIgnoreCase(getMotivePower()))
            {
                smogAbatement = 20.00;
            }

            licenseFee = baseFee + smogAbatement + titleTransferFee + smogWaiverFee; 
        }

        public String toString()
        {
            return "\n Years Old:\t"+yearsOld+
                    "\n Previous State:\t"+getPreviousLicenseState();
        }
    }

    public static class NewVehicle extends Vehicle
    {
        public double vehiclePrice;

        public NewVehicle(String make, int modeYear, String motivePower,double price) {
            super(make, modeYear, motivePower);
            this.vehiclePrice = price;
        }


        public double getVehiclePrice() {
            return vehiclePrice;
        }


        public void setVehiclePrice(double vehiclePrice) {
            this.vehiclePrice = vehiclePrice;
        }


        public void computeLicenseFee() {

            double baseFee = 150.00;
            double smogAbatement = 0.00;
            double priceFee = 0.00;

            if("gas".equalsIgnoreCase(getMotivePower()))
            {
                smogAbatement = 20.0;
                priceFee = getVehiclePrice()*0.15;
            }

            licenseFee = baseFee + smogAbatement + priceFee; 
        }

        public String toString()
        {
            return "Price:\t\t$"+getVehiclePrice();
        }
    }
}

解析器

public class VehicleParser {

    public static Vehicle parseStringToVehicle(String lineToParse)
    {
        Vehicle vehicleObj = null;

        Vehicle.UsedVehicle usedVeh = new Vehicle.UsedVehicle(make, modelYear, power, previousState, currentYear);

        return vehicleObj;
    }
}

驾驶舱

 Vehicle obj = VehicleParser.parseStringToVehicle(inputInfo);
 vehicleList.add(obj);
 System.out.println(vehicleList.get(i));
穆雷尼克

您正在覆盖该toString()方法。Java在这里没有做任何特殊的魔术。如果要调用超类的方法,则需要使用super关键字来显式地执行此操作:

@Override
public String toString()
{
    return super.toString() + // Here
            "\n Years Old:\t"+yearsOld+
            "\n Previous State:\t"+getPreviousLicenseState();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

重写超类继承的方法

来自分类Dev

其超类不是Object的mixin

来自分类Dev

Python:如何使子类在从其超类继承的方法下“关闭”

来自分类Dev

Python:如何使子类在从其超类继承的方法下“关闭”

来自分类Dev

让继承的类实现超类的方法

来自分类Dev

Scala中继承的案例类的toString方法

来自分类Dev

在多重继承中调用超类方法

来自分类Dev

继承调用超类方法java

来自分类Dev

方法不会从其超类重写方法

来自分类Dev

Java泛型,将T方法称为T而不是其超类

来自分类Dev

方法不会从其超类 swift 覆盖

来自分类Dev

从超类拆分toString

来自分类Dev

从超类继承ArrayList

来自分类Dev

类继承,重写方法以及从超类访问存储的属性

来自分类Dev

Java反射:从超类继承的类中调用GetDeclaredFields()方法

来自分类Dev

如何从重写的子类方法调用超类的继承方法?

来自分类Dev

使用超类引用调用重载的继承方法

来自分类Dev

角控制器继承/重写“超类”方法

来自分类Dev

Java继承;将子类传递给超类的抽象方法

来自分类Dev

PreferenceActivity中的isValidFragment“方法不会覆盖其超类的方法”

来自分类Dev

方法不会从其超类重写方法。Android片段

来自分类Dev

方法不会覆盖其超类中的任何方法

来自分类Dev

Java:在跳过中间继承的超类时调用基本超类方法

来自分类Dev

Swift中的子类不会继承其超类的初始化程序

来自分类Dev

为什么我更喜欢元类而不是Python中超类的继承

来自分类Dev

当对象调用其超类的方法时如何处理?

来自分类Dev

C ++继承的方法调用基类的方法,而不是重载的方法

来自分类Dev

从React的超类继承defaultProps

来自分类Dev

类文件继承不是类

Related 相关文章

热门标签

归档