Bash does not have the concept of public/private functions. All functions are public. However, it's common practice (across various programming and scripting languages including Bash) to let the names of functions begin with a double underscore if they're intended for private/internal use only.
__foo() {
# this function is for internal use
...
}
bar() {
# this function is for public use
...
}