In openzeppelin contracts in same cases we have 2 types of functions for the same functionality, one of them preceded by a dash symbol (_). That is the case of transfer(x, y, z)/_transfer(x, y, z) function.
I am aware that when I want to modify the behaviour if I inherit the function, I should use _transfer(x, y, z).
But what's the real difference? Because it happens in lot of functions, and I'm not really sure if I should use transfer(x, y, z) or _transfer(x, y, z).
So then, if I'm not gonna modify its original behaviour, should I use transfer or _transfer?
Thanks in advance