С наследованием сложнее, с одной стороны extends / with используют для той же цели что и в джаве, с другой стороны как инструмент для создания замкнутых иерархий кейс классов (адт). С другой стороны больше используется subtyping, который при сужении до только лишь объектов выдает нам джавовое отношение наследования, но на самом деле он несколько шире, поскольку определен для того что полностью конкретным инстанциируемым типом не является. Например - F[_], это вполне тип, но мы не можем создать значение типа F[_], потому что мы не знаем что подставлять на место пробела(давайте не будем рассматривать хаки с кастами), и по большому счету это лямбда только для типа. Есть ещё один вариант в виде структурного сабтайпинга, который обычно в джаве можно организовать при помощи рантайм рефлексии(тайпинг и рантайм вместе не очень, но пусть будет), тут он есть в виде рефлексии тоже, но компайлтайм и в основном при помощи shapeless - вы можете зареквестировать у кейс класса наличие некоторых полей определенного типа в компайл тайме.