Вопрос:

Вывести toString из разных классов

java tostring superclass

1248 просмотра

2 ответа

27 Репутация автора

Я пытался понять это некоторое время, я искал различные вопросы, но я не думаю, что становлюсь ближе.

У меня есть автомобиль суперкласса, который дает различные детали автомобиля. Затем у меня есть класс Car, который наследуется от Vehicle.

Я пытаюсь распечатать toString из моего класса Car, который перевешивает класс 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;

}

}

И это мой класс автомобилей

    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 колеса и кабриолет », с жирным текстом, полученным из классов «Автомобиль» и «Автомобиль» соответственно.

Как получить жирный текст для отображения в выводе? Прямо сейчас я просто получаю значения по умолчанию, такие как ноль, 0 и ложь.

Я ценю любой вклад, я знаю, что я, вероятно, делаю что-то действительно глупое, что действительно очевидно, но я просто не вижу этого.

Благодарю.

Автор: Keeron Источник Размещён: 02.02.2017 07:47

Ответы (2)


0 плюса

1384 Репутация автора

Я хочу, чтобы мой вывод был что-то вроде «Форд красный, имеет 4 колеса и кабриолет», с жирным текстом, полученным из классов «Автомобиль» и «Автомобиль» соответственно.

Если вы хотите включить эти слова, вы должны указать, чтобы эти слова были включены в ваш toString ().

Например, если вы хотите напечатать «имеет 4 колеса», то вы не можете просто сделать getNumberOfWheels(). В противном случае вы просто получаете 4. Вы должны сделать что-то вроде "has " + getNumberOfWheels() + " wheels". Если вы не скажете, чтобы он включал все слова, он не будет знать, чтобы включить их.

Автор: D M Размещён: 02.02.2017 08:05

1 плюс

623 Репутация автора

Решение

Я хочу, чтобы мой вывод был что-то вроде «Форд красный, имеет 4 колеса и кабриолет»

Для вашего вышеуказанного требования простое решение:

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

Если вы хотите получить весь вывод Ford.toStringпри создании Fordобъекта, вам также нужно указать имя автомобиля ! Как показано ниже и внесите в конструктор необходимые изменения!

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

Однако конструкторы в Carи Vehicleклассе сделаны, но локальным переменным из них не присвоено значение! Таким образом, .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);

}

Я пытаюсь распечатать toString из моего класса Car, который перевешивает класс 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;

}
Автор: Md Sifatul Islam Размещён: 02.02.2017 08:37
Вопросы из категории :
32x32