何故クラスにはprotectedの修飾が出来ないのでしょうか。
例えば

public class ClassName{
  //コンパイルエラーにならない
}
protected class ProtectedClass{
  //コンパイルエラーになる
}
class PackagePrivateClass{
  //ならない
}
private class PrivateClass{
  //なる
  /*自分の理解ではリフレクション使わないとアクセス出来ないからダメ*/
}

protectedの場合、アクセスができるのになぜでしょうか。
ちなみに、インナークラスの事ではありません。