protected なコンストラクタは子クラスから単純な new ではアクセスできない

JLS2 6.6.2.2 より。でも、super() や無名クラス生成を通じてはアクセスできる。

package foo;
public class ProtectedConstructor {
    protected ProtectedConstructor() {
    }
}
package bar;
import foo.ProtectedConstructor;
class ProtectedConstructorChild extends ProtectedConstructor {
    ProtectedConstructorChild() {
	super();
	ProtectedConstructor obj1 = new ProtectedConstructor() { };
	ProtectedConstructor obj2 = new ProtectedConstructor(); // コンパイルエラー
    }
}

要するに、protected というのは「単に自身を使うだけなのは(たとえ子クラスからでも)許さないが、子クラスで拡張する際の補助には使えるよ」という意味なのだろう。