Метод toString ничего не показывает, когда я запускаю код:

public abstract class Employee {

    private String firstName, lastname, socialSecurityNumber;



 Employee(){

    System.out.println("Employee Constructor called");
    firstName="Tony";
    lastname="Stark";
    socialSecurityNumber="3000";
}


    public String getFirstName(){
        System.out.println(firstName);
        return firstName;
    }
    public String getLastname(){
        return lastname;
    }
    public String getSocialSecurityNumber(){
        return socialSecurityNumber;
    }


    public String toString(){

     getSocialSecurityNumber();
     getLastname();
     getFirstName();

        return null;
    }
}

//Main method:
public void ComissionEmployeeTest(){

    Employee checkFirstly=new ComissionEmloyee();
checkFirstly.toString();

}
-1
Asilbek 16 Окт 2019 в 09:48
Как toString переопределяется в ComissionEmloyee?
 – 
Scary Wombat
16 Окт 2019 в 09:51
GetSocialSecurityNumber (); а другие возвращают строку, но это не значит, что она будет отображаться на консоли. Вам нужно это зарегистрировать.
 – 
Carlos López Marí
16 Окт 2019 в 09:53
Вы даже не распечатываете это, так как же вы хотите что-то увидеть? Вы просто вызываете метод и ничего не делаете с возвращенным значением.
 – 
michalk
16 Окт 2019 в 09:53
Метод toString() предназначен для возврата String представления объекта. Но вы возвращаете null.
 – 
Mushif Ali Nawaz
16 Окт 2019 в 10:23

3 ответа

Ваш toString () возвращает нуль. Вместо этого вам нужно вернуть String.

Примере

public String toString(){
  return String.format("ssn %s firstname %s lastname %s",getSocialSecurityNumber() + getLastname() + getFirstName());
}
0
maitreyak 16 Окт 2019 в 09:53
System.out.println(firstName); печатается в getFirstName(), поэтому, когда вы используете правильный метод, он отвечает на вопрос
 – 
Scary Wombat
16 Окт 2019 в 11:05

Ваш метод toString должен быть

public String toString(){

 return getSocialSecurityNumber()+
 getLastname()+
 getFirstName();

}

И вы должны напечатать то же самое, чтобы увидеть значение

System.out.println(checkFirstly);
0
ptk 16 Окт 2019 в 09:54
System.out.println(firstName); печатается в getFirstName(), поэтому, когда вы используете правильный метод, он отвечает на вопрос
 – 
Scary Wombat
16 Окт 2019 в 11:05

Когда вы вызываете этот метод toString();, вы всегда получаете null в качестве возврата. В вашем методе выполнение System.out.println(e.toString()); всегда аналогично выполнению System.out.println(null);. Итак, вам нужно вернуть String, объединенную, составленную с переменными. Например:

Измените метод toString, например:

public String toString(){
    //You can customize this as you wish
    return "SN: " + getSocialSecurityNumber() + " Last name: " etLastname() + " First name: " +getFirstName();

}

И назовите это так:

Employee e = new Employee();
System.out.println(e.toString());

Изменить

Я вижу, что у вас есть результат в геттере firstName, поэтому выполнение new Empoyee().toString(); должно по крайней мере что-то вывести.

0
Carlos López Marí 16 Окт 2019 в 12:10
System.out.println(firstName); печатается в getFirstName(), поэтому, когда вы используете правильный метод, он отвечает на вопрос
 – 
Scary Wombat
16 Окт 2019 в 11:05
У нас даже нет кода, который запускает и инсталлирует класс.
 – 
Carlos López Marí
16 Окт 2019 в 12:08