I’m supposed to make a program that has MotorVehicle abstract class. Car, Truck, Van are kinds of MotorVehicle. The setTerms() and displayInfo() are the only abstract. Car has String transType and void Car(), Van has int numPassenger and void Van(), as Truck has double payLoad and void Truck().
The output should be like this:
Brand is Mazda
Vehicle type is Sedan
Color is Red
Transmission type is Automatic
Price is 840000.0
Terms is 5 years to pay
Brand is Isuzu
Vehicle type is Truck
Color is White
Payload capacity is 3.5
Price is 910000.0
Terms is 3 years to pay
Brand is Mitsubishi
Vehicle type is Family Van
Color is Blue
Number of passenger is 8
Price is 1050000.0
Terms is 7 years to pay
But my program doesn’t still produce this output
Here’s my current codes:
public abstract class MotorVehicle
{
private String vehicleType;
private String brand;
private String color;
private String terms;
public MotorVehicle(String vcl, String brn, String clr, String trm)
{
vehicleType = vcl;
brand = brn;
color = clr;
terms = trm;
}
public String getVehicleType()
{
return vehicleType;
}
public String getBrand()
{
return brand;
}
public String getColor()
{
return color;
}
public abstract void setTerms();
public abstract void displayInfo();
}
//=========================================
public class Car extends MotorVehicle
{
String transType="";
String vehicleType;
String brand;
String color;
String terms;
int price = 0;
public Car(String vcl, String brn, String clr, String trm)
{
super(vcl, brn, clr, trm);
vehicleType = vcl;
brand = brn;
color = clr;
terms = trm;
}
public void Car()
{
brand = "Mazda";
vehicleType = "Sedan";
color = "Red";
transType = "Automatic";
price = (int) (700000 + (700000*0.2));
Double.toString(price);
terms = "5";
}
public void setTerms()
{
return;
}
public void displayInfo()
{
System.out.println("Brand is " + brand);
System.out.println("Vehicle type is " + vehicleType);
System.out.println("Color is " + color);
System.out.println("Transmission type is " + transType);
System.out.println("Price is " + price);
System.out.println("Terms is " + terms + " years to pay");
}
}
//=================================
public class Truck extends MotorVehicle
{
double payLoad=0.0;
String vehicleType;
String brand;
String color;
String terms;
int price = 0;
public Car(String vcl, String brn, String clr, String trm)
{
super(vcl, brn, clr, trm);
vehicleType = vcl;
brand = brn;
color = clr;
terms = trm;
}
public void Truck()
{
brand = "Isuzu";
vehicleType = "Truck";
color = "White";
payLoad = 3.5;
Double.toString(payLoad);
price = (int) (700000 + (700000*0.3));
Double.toString(price);
terms = "3";
}
public void setTerms()
{
return;
}
public void displayInfo()
{
System.out.println("Brand is " + brand);
System.out.println("Vehicle type is " + vehicleType);
System.out.println("Color is " + color);
System.out.println("Payload capacity is " + payLoad);
System.out.println("Price is " + price);
System.out.println("Terms is " + terms + " years to pay");
}
}
//==========================
public class Van extends MotorVehicle
{
int numPassenger=0;
String vehicleType;
String brand;
String color;
String terms;
int price=0;
public Van(String vcl, String brn, String clr, String trm)
{
super(vcl, brn, clr, trm);
vehicleType = vcl;
brand = brn;
color = clr;
terms = trm;
}
public void Van()
{
brand = "Mitsubishi";
vehicleType = "Family Van";
color = "Blue";
numPassenger = 8;
String.valueOf(numPassenger);
price = (int) (700000 + (700000*0.5));
Double.toString(price);
terms = "7";
}
public void setTerms()
{
return;
}
public void displayInfo()
{
System.out.println("Brand is " + brand);
System.out.println("Vehicle type is " + vehicleType);
System.out.println("Color is " + color);
System.out.println("Number of passenger is " + numPassenger);
System.out.println("Price is " + price);
System.out.println("Terms is " + terms + " years to pay");
}
}
//===================
And this is the main program:
public class MainVehicle
{
public static void main(String[] args)
{
BBVehicle[] vhl= new BBVehicle[3];
int ctr=0;
while(ctr<3)
{
if (ctr==0)
vhl[ctr]=new Car();
else if(ctr==1)
vhl[ctr]= new Truck();
else
vhl[ctr]= new Van();
vhl[ctr].displayInfo();
ctr++;
}
}
}
I’m not sure with what’s wrong with my program. help me please thanks
i)
You are defining return type of Class Contructor
it should be
A constructor resembles an instance method, but it differs from a method in that it has no explicit return type, it is not implicitly inherited and it usually has different rules for scope modifiers.
ii) Define a no-argument constructor in the abstract class (From the comment)
iii)
You are casting Car class to BBVehicle class. Although, both class are different. There is no relation between these two class..