Как ты переопределишь то, чего нет?
Ну смотри, на основе (допустим) этого класса будет заполняться в другом классе parts.Add(new Part() { PartName = "chain ring", PartId = 1334 }); если не переопределить toString то соответсвено мы увидим ConsoleCore.Part