65 votes

Sont privés de membres hérités en C#?

Juste vu un tutoriel en disant que:

Class Dog
{
  private string Name;
}
Class SuperDog:Dog
{
 private string Mood;
}

Puis il y a eu une UML afficher les SuperDog héritera de Nom. J'ai essayé mais il me semble que seuls les membres du public sont héritées. Au moins, je ne pouvais pas accéder à ce Nom si elle a été déclarée comme public.

115voto

Martin Eve Points 1375

Une classe dérivée a accès à l' public, protégé, interne, et protégé membres internes d'une base classe. Même si une classe dérivée hérite les membres privés d'une base de la classe, il ne peut pas accéder à ces membres. Cependant, tous les membres sont toujours présent dans la classe dérivée et peut faire le même travail qu'ils feraient dans la classe de base lui-même. Par exemple, supposons qu'un protégé de la classe de base méthode d'accès à une zone privée. Que le champ doit être présent dans la dérivée la classe pour que la base hérité méthode de classe pour fonctionner correctement.

De: http://msdn.microsoft.com/en-us/library/ms173149.aspx

Donc, techniquement, oui, mais en pratique, aucun.

53voto

this. __curious_geek Points 23728

Tout à partir de la classe de base est hérité de la classe dérivée.les membres de l' marquées comme privées ne sont pas accessibles à les classes dérivées pour l'intégrité de la fin, si vous avez besoin de faire accessible dans la classe dérivée, marque la les membres protégés.

Il existe différents niveaux de membres de l'accessibilité dans le contexte de l'héritage.

public: tous les membres publics de la classe de base sont accessibles au sein de la dérivée de la classe et pour le cas de la dérivée de la classe.

protected: tous les membres protégés de la classe de base sont accessibles au sein de la dérivée de la classe et de ne pas le cas de la dérivée de la classe.

protected internal: tous protégés par des membres internes de la classe de base sont accessibles au sein de la dérivée de la classe et pour le cas de la dérivée de la classe créée au sein de la même assemblée.

internal: tous les membres de la classe de base sont accessibles au sein de la dérivée de la classe et pour le cas de la dérivée de la classe au sein de la même assemblée.

private: aucun des membres privés de la classe de base sont accessibles au sein de la dérivée de la classe et pour le cas de la dérivée de la classe.

20voto

Justin Niessner Points 144953

SuperDog héritera du Nom de domaine, oui.

SuperDog va PAS avoir accès au terrain, donc il n'est pas pratique d'utilisation (autant que SuperDog est concerné).

1voto

Poni Points 3803

Oui, bien que les héritiers ne peuvent pas accéder à ce membre.

Si vous avec qui ils seront en mesure d'y accéder, de le déclarer en tant que protégé.

0voto

Matt Ellen Points 5270

Les membres privés ne sont pas accessibles aux descendants d'une classe.

Je ne suis pas sûr de tous les modificateurs d'accès, mais à la base de la population et des membres protégés sont accessibles.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X