2015-09-06 4 views
-3
public class Person { 
    protected String name; 
    public Person(String name) { 
     this.name = name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String toString() { 
     return name; 
    } 
} 
public class Student extends Person { 
    protected String program; 
    protected int credits; 
    public Student(String name, String program) { 
     super(name); 
     this.program = program; 
     credits = 0; 
    } 
    public String toString() { 
     return name + ", " + program; 
    } 
    ... 
} 
public class FacultyMember extends Person { 
    protected String department; 
    public FacultyMember(String name, String department) { 
     super(name); 
     this.department = department; 
    } 
    public String toString() { 
     return name + ", " + department; 
    } 
} 

Предположим, что мы объявляем переменную String info. Что значение, что информация получить в каждом заявлений:В чем преимущество использования toString()

Person p = new Person("Lisa Svensson"); 
info = p.toString(); 
p = new Student("Lisa Svensson","D"); 
info = p.toString(); 

И какова выгода от использования toString() в этом примере?

+0

Значение, которое 'info' получает, зависит от того, что делают методы' toString() 'классов Person и Student. Не могли бы вы опубликовать их? – Mshnik

+0

Вы не можете назначить 'p'' info', потому что один является объектом 'Person', а один является объектом' String'. '.toString()' преобразует 'p' в' String'. –

+1

Почему бы вам не запустить и не увидеть результаты! –

ответ

0
Person p = new Person("Lisa Svensson"); 
info = p.toString(); 

Здесь вы назначаете строковое представление объекта Person для информации о строках. info выведет строковое представление лица объекта, если вы переопределили toString в объекте Person, иначе распечатайте представление, не читаемое пользователем.

+0

Я действительно опубликовал весь код .. не могли бы вы описать для меня какой вывод информации? – Ali12

0

Ну, если вы не указали свой собственный toString(), в обоих случаях информация, вероятно, будет содержать место в памяти для этого объекта. toString() - это метод, который определяется классом Object, который наследует все остальные объекты в java. Определение (переопределение) собственного метода toString для объекта просто указывает, какое строковое представление этого объекта вы хотели бы иметь. Это может быть комбинированная строка различных свойств или некоторых обработанных данных. Например, возьмите блоки списка (если вы разрабатываете gui) при размещении объектов в списках, эти объекты позже будут показаны в списке объектов, а по умолчанию в списке появится метод объектов toString, чтобы получить строку текста, который будет объект будет представлен.

Смежные вопросы