With an additional explicit parameter? No. Each typeclass instance must have the same interface as typeclass. With an implicit parameter? Yes. You can declare implicit defwhich returns the required implicit, but itself requires the implicit. Here is an example to explain:
case class Cat(name: String)
case class Person(name: String)
case class Silverware(kind: String)
implicit object GoodSilver extends Silverware("the good silver")
trait AnimalFeeder[A] {
def feed(animal: A): Unit
}
implicit object CatFeeder extends AnimalFeeder[Cat] {
def feed(cat: Cat) = println(cat.name + " eats cat food!")
}
implicit def personFeeder(implicit silverware: Silverware) =
new AnimalFeeder[Person] {
def feed(person: Person) =
println(person.name + " eats people food with " + silverware.kind)
}
def feedAnimal[A](a: A)(implicit feeder: AnimalFeeder[A]) = feeder.feed(a)
CatFeeder , cat Cat. personFeeder - def, Person, Silverware. , :
feedAnimal(Person("John"))
AnimalFeeder[Person], personFeeder, Silverware, GoodSilver.
, personFeeder . Silverware AnimalFeeder[Person], Silverware. , implicit, .