public、protected、privateは、変数やクラスを、どの範囲から参照可能かを決める修飾子です。(他にも色々ありますが、もっとも良く使う修飾子です)
public 自ファイルおよび他ファイル、全てのクラスから参照可能 protected 他ファイルの他クラス以外、全てのクラスから参照可能 private 自ファイルの自クラスのみ参照可能 指定なし 自ファイル内の自クラス、サブクラス、他クラスから参照可能
ちょっとわかりづらいですが、上記のような関係性があり、それらの動きをよく考えつつプログラムを組みます。