Обычный метод — функция, объявленная внутри класса.
Расширяющий метод — функция, объявленная вне класса, но действующая так, будто является его членом. При объявлении расширяющего метода указывается имя класса-получателя, к которому он применяется.
kotlin
Ключевые отличия:
private и protected членам класса. Расширяющие методы не имеют прямого доступа к private и protected членам.this: В обычном методе this ссылается на экземпляр класса, в котором метод объявлен. В расширяющем методе this ссылается на экземпляр объекта-получателя, для которого вызывается расширение.Расширяющие методы полезны для добавления функциональности к существующим классам без их модификации, например, к классам из сторонних библиотек или стандартной библиотеки Kotlin.