Visibility

When code is all in one file, everything is "visible." This means that if there is a method you are always allowed to call it.

class Main {
    void canCallThis() {
        System.out.println("of course!")
    }

    void main() {
        canCallThis();
    }
}

And if there is a field you can read it, if there is a class you can make an instance of it, etc.

Once we split into multiple files, you are allowed to make things less visible.