A GOOPS method is like a Scheme procedure except that it is specialized for a particular set of argument classes, and will only be used when the actual arguments in a call match the classes in the method definition.
(define-method (+ (x <string>) (y <string>))
(string-append x y))
(+ "abc" "de") ⇒ "abcde"
A method is not formally associated with any single class (as it is in many other object oriented languages), because a method can be specialized for a combination of several classes. If you've studied object orientation in non-Lispy languages, you may remember discussions such as whether a method to stretch a graphical image around a surface should be a method of the image class, with a surface as a parameter, or a method of the surface class, with an image as a parameter. In GOOPS you'd just write
(define-method (stretch (im <image>) (sf <surface>))
...)
and the question of which class the method is more associated with does not need answering.
A generic function is a collection of methods with the same name but different sets of specializing argument classes.