Java защищенный доступ не работает

В Java есть три уровня доступа:

Public - открыт для мираЧастный - открыт только для классаЗащищено - Открыто только для класса и его подклассов (наследование).

Так почему же компилятор Java позволяет этому случиться?

TestBlah.java:

public class TestBlah {

    public static void main(String[] args) {
        Blah a = new Blah("Blah");
        Bloo b = new Bloo("Bloo");
        System.out.println(a.getMessage());
        System.out.println(b.getMessage()); //Works
        System.out.println(a.testing);
        System.out.println(b.testing); //Works
    }
}

Blah.java:

public class Blah {
    protected String message;

    public Blah(String msg) {
        this.message = msg;
    }

    protected String getMessage(){
        return(this.message);
    }   
}

Bloo.java:

public class Bloo extends Blah {
    public Bloo(String testing) {
        super(testing);
    }
}

Ответы на вопрос(5)

Ваш ответ на вопрос