Surface material override vs material override vs material overlay?

godot 4.2.2

What is the difference between all of these?
Which should I use to set material if I cant set it in the ordinary material slot