Because variables and methods do not share the same namespace in Java, so you can have variables and methods with the same name.
This is valid in Java:
class Test { private static int c; private static int c() { return 0; }}Now what would Test.c refer to here if we didn't have the :: operator?