I don't agree with you
default (friendly) is more restrictive than protected and that's why the compiler complains
I can prove my point.
If in the same package, I have 2 separate (independent) classes (say class A and class B), I can access the protected member of one class (say 'A') from another ('B'), even though, I do not extend from A in B.
If I have 2 packages and have class A in one and class B in the other, I would not be able to access the protected member of A from B, if I do not extend A in B.
This shows that default is less restricted than protected. Feel free to correct me, if I am wrong.
If this is true, then why does the compiler flag an error when I tried to override the method finalize() with the default access modifier?