Disagree. The variable x is visible to the Middle class because they are both in the same package and x has package-private (or default) access. Because you are saying "x" alone the Middle class won't compile. If you say "Top.x" or "import static Top.x;" then it will compile. You are not using super() but the compiler implies it, so x becomes . . . then . . .