В Java это соглашение для доступа ко всем полям через getter / seters извне класса. Изнутри класса вы обычно обращаетесь к полям напрямую. Однако вы также можете получить к ним доступ через getter / setter.
Важно знать, что это просто соглашение. Многие другие языки программирования не имеют таких строгих правил или других понятий. Поэтому вы не должны этого делать. Но это хорошая практика.
И: Не против производительности! Использование getters / seters не повлияет на производительность вашего приложения. JVM / Java предназначен для работы именно так. Каждая JVM оптимизирует ваш код и обрабатывает геттеры / сеттеры очень эффективным способом. Попробуйте написать четкий и удобный читаемый код.