Access Modifiers as Pokemon
The three access modifiers in programming are like the three Kanto starters in Pokemon.
First you have private variables, the Charmander of the programming world. Experienced programmers use them because they know they are safe and powerful assets to your code. They can be tricky in the beginning but they prove to be highly valuable in the future.
Then you have protected variables, the Squirtle of the programming world. They’re very practical and versitile; they let you access the variable’s value outside of the class but also provide some restriction. They’re like that sweet middle ground between best choice for your code because they allow you to practice good programming habits like hiding and inheritance but also are fairly easy to use.
And then there’s public variables. These are the Bulbasaur. Everyone has used them. EVERYONE. They are beginners choice because they are so easy to use and they’ll get you through your first few runs with minimal issues. But as you become more advanced they just...become less practical. Still incredibly useful, but open themselves up to all kinds of weakness (until fairy types came and scrambled my code).