Друзья если меняю у метода getName, с паблика на приват, то вывод "main", а если паблик то "sout". Не могу понять как работает этот механизм, поясните пжлста.
public class Solution {
    private String name;

    Solution(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    private void sout() {
        new Solution("sout") {
            void printName() {
                System.out.println(getName());
            }
        }.printName();
    }

    public static void main(String[] args) {
        new Solution("main").sout();
    }
}