For example, a String class might include a static method, concatenate(), which returns its arguments joined into one string. It might be called like this:
print String.concatenate("FOL", "DOC");which would print "FOLDOC".
The same result might be achieved with a real object method, append(), which returns its argument string appended to the object it is invoked on, e.g.:
String s = "FOL"; print s.append("DOC");While the syntax looks similar, the two are completely different. The static method is just a function called "String.concatenate" which can be resolved to the address of some code at compile time (or load time if the String class is dynamically loaded). When invoking an object method, the class of the object is not generally known until run time so method lookup is a run-time process.