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?