Non, il n'est pas. Ce qui aurait l'avantage de permettre à ce type de restriction?
Protégées et à l'héritage qui est bon pour l'encapsulation (se cacher de l'information). De protection* l'héritage est pris en charge en C++, mais elle n'est pas en Java. Voici un exemple de mon projet où elle serait utile.
Il y a une classe de base en tant que 3e partie-cadre**. Il a des dizaines de paramètres plus les propriétés et les méthodes permettant de les manipuler. La classe de base ne fait pas beaucoup de la vérification des paramètres individuels sont affectés, mais il va générer une exception, plus tard, si elle rencontre une inacceptable combinaison.
Je suis en train de faire un enfant en classe avec des méthodes pour l'attribution de ces paramètres (par exemple, exemple, l'attribution soigneusement conçu paramètres à partir d'un fichier). Il serait bien de nier le reste du code (en dehors de ma classe enfant) la capacité de manipuler les paramètres individuels et mess up.
Cela dit, je pense qu'en C++ (qui, rappelons-le, prend en charge privé et protégé de l'héritage), il est possible de jeter de la classe enfant à parent et d'obtenir l'accès à des parents membres du public. (Voir aussi Chris Karcher post) Encore, protégé de l'héritage améliore de se cacher de l'information. Si les membres d'une classe B1 doivent être vraiment cachés dans d'autres classes C1 et C2, il peut être organisé par un protégé variable d'une classe B1 dans C1 et C2. Protégé instance de B1 sera disponible pour les enfants de C1 et C2. Bien sûr, cette approche en elle-même ne fournit pas de polymorphisme entre C1 et C2. Mais le polymorphisme peut être ajouté (si désiré) en héritant C1 et C2 partir d'une interface commune I1.
* Pour des raisons de concision utilisera le "protégé" au lieu de "privé et protégé".
** La Mesure de National Instruments Studio dans mon cas.