初心者、質問お願いします。

「普通、変数は プライベートに設定して、パブリックのプロパティーや関数で変数を使う」と読んだのですが、
プロパティーや関数で外のクラスから変数を知ったり、変えたり出来るなら、変数はパブリックにしても問題ないと思うのですが、なぜ変数はプライベートにするのですか?