nombre de clase en método junto con variable

Estoy leyendo sobre patrones de diseño en PHP y sigo viendo la siguiente sintaxis, por ejemplo

abstract class AbstractObserver {
    abstract function update(AbstractSubject $subject_in);
}

o

class PatternObserver extends AbstractObserver {
    public function __construct() {
    }
    public function update(AbstractSubject $subject) {   
    }
}

(el código es parte deesta ejemplo)

donde "AbstractSubject" es otra clase abstracta.

Estoy acostumbrado a definir métodos comomethodName($var), sin incluir un nombre de clase allí, comomethodName(className $var).

Entonces, ¿qué hace realmente el nombre de la clase en un método? Mi mejor suposición es que pasa algo así como una referencia en esa clase? ¿Me puede explicar lo que realmente hace?

Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta