% File src/library/methods/man/MethodDefinition-class.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2007 R Core Team
% Distributed under GPL 2 or later

\name{MethodDefinition-class}
\docType{class}
\alias{MethodDefinition-class}
\alias{SealedMethodDefinition-class}
\title{Classes to Represent Method Definitions}
\description{
  These classes extend the basic class \code{"function"} when
  functions are to be stored and used as method definitions.
}
\section{Objects from the Class}{
  The action of setting a method by a call to \code{\link{setMethod}} creates an object of this class.  It's
  unwise to create them directly.

  The class \code{"SealedMethodDefinition"} is created by a call to
  \code{\link{setMethod}} with argument \code{sealed = TRUE}.  It has
  the same representation as \code{"MethodDefinition"}.
}
\section{Slots}{
  \describe{
    \item{\code{.Data}:}{Object of class \code{"function"}; the data
        part of the definition. }
    \item{\code{target}:}{Object of class \code{"signature"}; the
        signature for which the method was wanted. }
    \item{\code{defined}:}{Object of class \code{"signature"}; the
        signature for which a method was found.  If the method was
        inherited, this will not be identical to \code{target}. }
      \item{\code{generic}:}{Object of class \code{"character"}; the function
        for which the method was created. }
  }
}
\section{Extends}{
  Class \code{"function"}, from data part.\cr
  Class \code{"PossibleMethod"}, directly.\cr
  Class \code{"OptionalMethods"}, by class \code{"function"}.
}
\details{
  Method definition objects are functions with additional information
  defining how the function is being used as a method.  The
  \code{target} slot is the class signature for which the method will
  be dispatched, and the \code{defined} slot the signature for which
  the method was originally specified (that is, the one that appeared
  in some call to \code{\link{setMethod}}).
}
\seealso{class \code{\linkS4class{MethodsList}} for the objects
  defining sets of methods associated with a particular generic
  function.  The individual method definitions stored in these objects
  are from class \code{MethodDefinition}, or an extension.
  Class \code{\linkS4class{MethodWithNext}} for an extension used by
  \code{\link{callNextMethod}}.
}
\keyword{classes}
