I would also expect "Protected Friend" to behave the same as "Public" in this case as you are deriving Crate from Box. However, I very seldom use public class fields like this when building classes. I always go with the "private field, public accessor" approach. Perhaps the compiler has an issue with Protected class fields (i.e. a public Integer) vs a public/protected property that exposes a private class field.