Как реализовать Set Asubclass = Amasterclass

fedotxxl

Well-Known Member
09.11.2005
614
0
#1
Изучаю на практике ООП в LN и постоянно сталкиваюсь с проблемами из-за неграмотности
Есть Мастер класс и классы, наследующие его.
Хотелось бы создавать новый инстанс сабклассов при помощи одной функции (это часть моей подзадачи). Я определял переменную как Private ASubClass as ASubClass и писал что-то и вызывал функцию ABC, которая делал многое, но также инициировала новый инстанс ASubClass (не инициированный инстанс ASubClass передавался как параметр). Вот тут-то я и обломался. Код
Код:
Function ABC(... Input_Object as AMasterClass...) as ...
...
Set Input_Object = New AMasterClass
...
End function
к моему великому разочарованию не заработал... Никто не подскажет, как решить проблему?
 
Y

Yakov

Гость
#2
Для: fedotxxl
Переменной с типом подкласса нельзя присваивать значение переменной с типом суперкласса. Наоборот можно (и нужно, см. полиморфизм), а так нельзя. Почему? Потому что если клиент ожидает получить экземпляр подкласса, а ему дается экземпляр суперкласса, то клиент не сможет использовать методы подкласса, которых нет в суперклассе. Если же клиент ожидает суперкласс, то он гарантированно получит все необходимые методы, даже если ему "подсунуть" подкласс.