¿Cuál es la diferencia entre getFields y getDeclaredFields en la reflexión de Java?

Estoy un poco confundido acerca de la diferencia entre elgetFields método y elgetDeclaredFields Método cuando se utiliza la reflexión de Java.

yo lei esogetDeclaredFields le da acceso a todos los campos de la clase y quegetFields Solo devuelve campos públicos. Si este es el caso, ¿por qué no usarías siempre?getDeclaredFields?

¿Alguien puede explicar esto, y explicar la diferencia entre los dos métodos, y cuándo / por qué querría usar uno sobre el otro?

Respuestas a la pregunta(3)

Su respuesta a la pregunta