[Java - OOP Advanced - Exercises] Problem08 - MilitaryElite
Здравейте!
Преди малко, докато обмислях контструкцията която трябва да направя за тази задачка, доста се позачудих за класа Soldier и интерфейса който се изисква за него. Ясно ми е, че идеята е да се упражняваме в писането на интерфейси, но ще попитам за принцната ситуация.
Тъй като field-овете на Soldier, по условието на задачата, ще се достъпват само от наследниците му и то за toString() метода. Има ли смисъл да правим гетърите публични и съответно въобще да имаме интерфейс ISoldier?
Поздрави!
П.П. Всъщност ако ползваме гетърите само за toString(), реално ни стигат да са private за всички класове нали?
Поправете ме ако греша, но toString() методите не трябва да са private. Доколкото разбирам, @Override toString() се прави за да дефинира как се отпечатва даден обект. Примерно: System.out.print(soldier)
Също, ако не се лъжа, toString() няма нужда да се декларират в интерфейса, защото се наследяват от Object.
Поздрави,
Ивелин Тенев
Да прав си, така е - toString си е публичен метод на Object. Няма как да бъде private. Става дума за публичните гетъри от класовете на войниците. Понеже ги пишем към интерфейси, интерфейса ни задължава те да са публични, но иначе за целите на задачата можеше да си останат private защото единственото място където се ползват е в toString() метода на войника. В случая се упражняваме да пишем класовете към интерфейси.
Да, не бях разбрал напълно предишния ти пост. Снощи до 3 си играх с това и още не съм се преборил :)
Доколкото разбирам правилата са следните:
Към ОП: Ако не се лъжа, field-вете на Soldier не трябва да се достъпват от наследниците му, а да се преизползва super.toString() метода.
Поздрави,
Ивелин Тенев