从不同的类打印toString

时间:2017-02-02 19:47:58

标签: java tostring superclass

我一直试图解决这个问题一段时间,我已经搜索了各种问题,但我认为我没有更接近。

我有一个超级车辆,可以提供车辆的各种细节。然后,我的Car类继承自Vehicle。

我正在尝试从我的Car类打印toString,它覆盖了Vehicle类。

基本上我想打印出每辆车的信息。

这是我的主要

    public static void main(String []args)

    {

        Car Ford = new Car(Red, 4, true);

        //Ford = Ford.;   Tried various things here to no avail, kept getting nullfalse in output

        Car Honda = new Car(Blue, 4, false);


        System.out.println(Ford.vehicleDetails);

        System.out.println("Honda");

    }

}

这是我的车辆类

public class Vehicle

{

// Variables

private String vehicleColour;

private int numberOfWheels;

String vehicleDetails;

// Constructor

public Vehicle(String vehicleColour, int numberOfWheels)

{

}

// Getters

public String getVehicleColour()

{
    return vehicleColour;
}

public int getNumberOfWheels()

{
    return numberOfWheels;
}



// Setters

public void setVehicleColour(String vehicleColour)

{
    this.vehicleColour = vehicleColour;
}


public void setNumberOfWheels(int numberOfWheels)

{
    this.numberOfWheels = numberOfWheels;
}


// Constructor

public Vehicle ()

{

}


// toString method super

public String toString() {

    String vehicleDetails = (getVehicleColour() + "" + getNumberOfWheels());

    return vehicleDetails;

}

}

这是我的Car class

    public class Car extends Vehicle

{

    // Variables

    private boolean convertible;

    Car vehicleDetails;

    // Getter

    public boolean getConvertible()

    {
        return convertible;
    }

    // Setter

    public void setConvertible(boolean convertible)

    {
        this.convertible = convertible;
    }

    // Constructor

    public Car(String vehicleColour, int numberOfWheels, boolean convertible) {


    }


        // toString method override

        @Override
        public String toString() {

        return super.toString() + convertible;

        }

    }

我希望我的输出类似于“福特红色 4 轮子和是可转换”,带粗体文字分别来自车辆和汽车类。

如何在输出中显示粗体文字?现在我只获取默认值,如null,0和false。

我很欣赏任何输入,我知道我可能正在做一些非常愚蠢的事情,这显然是显而易见的但我却看不到它。

感谢。

2 个答案:

答案 0 :(得分:1)

  

我希望我的输出类似于"福特是红色的,有4个轮子并且是敞篷车"

对于您的上述要求简单解决方案:

System.out.println("The Ford is "+ Ford.toString() );

如果您打算从Ford.toString获取整个输出,那么在创建Ford对象时,您还需要传递汽车名称!如下所示,并在构造函数中进行必要的更改!

Car Ford = new Car("Ford","Red", 4, true);

然而,CarVehicle类中的构造函数已生成,但没有为它们的局部变量赋值!因此.toString()没有得到任何展示!

所需的更改是:

在主类

System.out.println("The Ford is "+ Ford.toString() );

在汽车类

//change in the constructor
public Car(String vehicleColour, int numberOfWheels, boolean convertible) {

    setNumberOfWheels(numberOfWheels);
    setVehicleColour(vehicleColour);
    setConvertible(convertible);

}
  

我正在尝试从我的Car类打印toString,它覆盖了Vehicle类。

//change in toString()


    @Override
    public String toString() {
        if(convertible){
             return super.toString() +"and is a convertible" ;
        }else{
             return super.toString() +"and is not a convertible" ;
        }


    }

车辆类

//change the constructor
public Vehicle(String vehicleColour, int numberOfWheels)

{
        setNumberOfWheels(this.numberOfWheels);
        setVehicleColour(this.vehicleColour);

}
  

基本上我想打印出每辆车的信息。

//change the toString()
public String toString() {

    String vehicleDetails = (getVehicleColour() + ", has "  +getNumberOfWheels()+" wheels");

    return vehicleDetails;

}

答案 1 :(得分:0)

  

我希望我的输出类似于“福特是红色的,有4个轮子   并且是一辆敞篷车“,带有大胆的文字来自车辆和汽车   分别为。

如果你想要包含这些单词,那么你必须告诉它在你的toString()中包含这些单词。

例如,如果您希望它打印“有4个轮子”,那么您不能只执行getNumberOfWheels()。否则你得到一个4.你必须做"has " + getNumberOfWheels() + " wheels"之类的事情。如果你没有告诉它包括所有单词,它将不知道包含它们。