Абстрактный базовый класс и данные членов? Как это работает?
Абстрактный базовый класс (ABC) может иметь данные для поддержки классов, которые его наследуют. Однако, учитывая, что невозможно создать экземпляр объекта ABC, как компилятор обрабатывает эти данные в тех случаях, когда у нас есть ряд объектов производного класса, которые наследуют ABC. Связываются ли данные с объектом производного класса?
2 ответа
Если вы говорите о статических данных, то эти данные останутся связанными с базовым классом. Все еще будет только один экземпляр этих данных в памяти независимо от того, сколько разных классов получено из них.
Нестатические данные будут связаны с каждым экземпляром этого класса. Если вы создадите 5 экземпляров этого класса, в памяти будет 5 экземпляров этих данных, каждый из которых будет доступен только через связанный экземпляр.
Да.
Компилятор может принимать только унаследованный тип, который был создан с производным существенным классом. Это потому что
public void RunInstantiate()
{
IAbstract abc;
abc = new Implement();
}
abc
всегда будет указывать на реальный объект (типа Implement
).