Why? Because that's how the Java programming language was designed. There's not much more to it.
Something that is protected
is accessible from
- the class itself,
- classes in the same package (doesn't matter if they are subclasses or not),
- subclasses (doesn't matter if they are in the same package or not).
This is different from C++, but Java is not C++, so it doesn't necessarily work in the same way.