Вызов toString из основного класса через полиморфизм - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть алгоритм с универсальным классом под названием Employee и некоторыми конкретными классами, которые наследуются от Employee, как показано ниже:

abstract class Employee {
    private String name;
    private String document;

    public String toString(){
         return "\nName and Document";
    }
}

class Driver extends Employee {
    private String licencePlate;

    public String toString(){
        return "Plate: XXXXX";
    }
}

class TelOperator extends Employee {
    private String phone;

    public String toString(){
        return "Phone: XXX - XXXXXX";
    } 
}

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        TelOperator telOp = new TelOperator();
        System.out.println(telOp);

        Driver driver = new Driver();
        System.out.println(driver);

    }
}

Я ищу способ избежать вызова каждого объекта в отдельности и выполнить метод toString из основного класса с toString из определенных классов, которые наследуются от него. Мой вывод будет примерно таким:

// Driver

  1. Имя и документ
  2. Тарелка: XXXXX

// Телефонный помощник

  1. Имя и документ
  2. Телефон: XXX - XXXXX

Вы можете проверить исходный код здесь .

Ответы [ 3 ]

0 голосов
/ 01 ноября 2018

Вам нужно будет создать объект подкласса и вызвать их toString в основной строке toString, если вы хотите, чтобы оба распечатывались одновременно. Надеюсь, я правильно понимаю ваш вопрос.

0 голосов
/ 01 ноября 2018

Вы можете создать класс Factory для сотрудника, и завод принимает решение, какой подкласс должен быть возвращен вызывающей программе. Затем он создает экземпляр этого подкласса и затем возвращает его вызывающей программе.

Надеюсь, я правильно понял ваш вопрос.

0 голосов
/ 01 ноября 2018

Просто добавьте вызов к super.toString() в методах toString() вашего дочернего класса: -

public String toString() {
    return super.toString() + "\nPhone: XXX - XXXXXX";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...