Абстрактный базовый класс и данные членов? Как это работает? - PullRequest
0 голосов
/ 22 октября 2009

Абстрактный базовый класс (ABC) может иметь данные для поддержки классов, которые его наследуют. Однако, учитывая, что невозможно создать экземпляр объекта ABC, как компилятор обрабатывает эти данные в тех случаях, когда у нас есть ряд объектов производного класса, которые наследовать азбуку. Связываются ли данные с объектом производного класса?

Ответы [ 2 ]

0 голосов
/ 22 октября 2009

Если вы говорите о статических данных, то эти данные останутся связанными с базовым классом. В памяти все равно будет только один экземпляр этих данных, независимо от того, сколько разных классов получено из них.

Нестатические данные будут связаны с каждым экземпляром этого класса. Если вы создадите 5 экземпляров этого класса, в памяти будет 5 экземпляров этих данных, каждый из которых будет доступен только через связанный экземпляр.

0 голосов
/ 22 октября 2009

Да.

Компилятор может принимать только унаследованный тип, для которого создан производный существенный класс. Это потому что

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

abc всегда будет указывать на реальный объект (типа Implement).

...