2009-10-22 7 views
0

Une classe de base abstraite (ABC) peut contenir des données pour prendre en charge les classes héritées. Cependant, étant donné qu'il n'est pas possible d'instancier un objet d'un ABC, comment le compilateur gère-t-il ces données pour les cas où nous avons un certain nombre d'objets de classe dérivés qui héritent de l'ABC. Est-ce que les données sont associées à l'objet de classe dérivé?Résumé Membres de la classe de base et des données? Comment ça marche?

+1

Ce n'est pas une "question de devoirs" juste quelque chose qui m'a dérangé – Wawel100

Répondre

0

Si vous parlez de données statiques, ces données resteront associées à la classe de base. Il n'y aura toujours qu'une seule instance de ces données en mémoire, peu importe le nombre de classes qui en dérivent.

Des données non statiques seront associées à chaque instance de cette classe. Si vous créez 5 instances de cette classe, il y aura 5 instances de ces données en mémoire, chacune accessible uniquement via son instance associée.

+0

Donc les données non statiques déclarées dans l'ABC deviennent associées à chaque instance de la classe dérivée? – Wawel100

+0

Que voulez-vous dire par associé? –

+0

Je suppose que ce que j'essaie de comprendre, c'est s'il n'est pas possible de créer une instance d'un ABC comment le compilateur gère-t-il différentes instances des données ABC non statiques? – Wawel100

0

Oui.

Un compilateur peut uniquement accepter un type hérité qui a été instancié avec une classe substantielle dérivée. En effet,

public void RunInstantiate() 
{ 
    IAbstract abc; 
    abc = new Implement(); 
} 

abc sera toujours pointer vers un objet réel (du type Implement).

Questions connexes