В общем случае предпочтительно, чтобы атрибуты были частными, если это необходимо для связанной операции get / set.Обратите внимание, что между открытым и закрытым существует защищенная видимость, позволяющая прямой (и потенциально опасный) доступ унаследованным классам, но не другим классам.
В случае класса чистых данных ( сущность * 1004)*, например, struct в C / C ++), однако вы можете использовать открытые атрибуты, потому что нет никакого связанного поведения / согласованности для соблюдения между атрибутами, это просто группа значений.
Вы говорите, что классы спортивные соревнования и командные игроки наследуют спорт класса?если да, то это очень странно, спортивные соревнования и командные игроки не являются спортивными