So i was working with local classes this morning when I encountered a strange behaviour of inheritance regarding scopes.
public class Foo{
    public void printer(){
        class Hello extends Bar{
           private String str = "Hello";
        }
        class World extends Hello{
           private void print(){
              System.out.println(super.str);
           }
        }
    }
}
With class Bar looking like this:
public class Bar{
   protected String str = "FooBar";
}
So i expected an ouput like this:
FooBar
But ended up with:
Hello
Shouldn't the private prefix of the String declaration prevent the child class from accessing the variable?
However I procceded further and removed the String declaration and this time ended up with my previous expected ouput.
So why doesn't it always get the variable of class Bar when a variable of the same name is declared private in the direct parent class?
Thanks for any help in advance.
