El concepto de sombreado

Dado el siguiente código:

public class A {
 static final long tooth = 1L;

 static long tooth(long tooth){
  System.out.println(++tooth);
  return ++tooth;
 }

 public static void main(String args[]){
  System.out.println(tooth);
  final long tooth = 2L;
  new A().tooth(tooth);
  System.out.println(tooth);
 }
}

¿Me puede explicar el concepto de sombreado? Y otra cosa, quetooth ¿Se utiliza realmente en el código del método principal?

Y sé que es un código muy feo, pero feo es la opción estándar para los escritores de libros SCJP.

Respuestas a la pregunta(2)

Su respuesta a la pregunta