UDFs support function name overloading: you can define several UDFs that have the same name but are different from each other in such a way to make each UDF unique.
The name that is overloaded is specified in the CREATE FUNCTION statement as the name to use to invoke the UDF from an SQL statement. You must specify a unique Java method for each UDF with the same name.
You can also overload functions of different classes (scalar, aggregate, and table). That is, a scalar function can have the same name as an aggregate function within the same database as long as the two functions are unique.