Можно ли изменить (унаследованный) класс объекта после создания - PullRequest
0 голосов
/ 29 января 2020

У меня есть класс (например, Vehicle), и у меня есть несколько других классов, которые его наследуют (Car Inherits Vehicle; Truck Inherits Vehicle; et c) Я не буду знать, каким будет класс наследования, пока быть, пока я не создаю экземпляр объекта. Можно ли изменить класс после его наследования? Например, могу ли я создать экземпляр Vehicle, выполнить логарифмический запрос c, чтобы определить, является ли он легковым или грузовым автомобилем, а затем применить класс Car или Truck к ним после слов?

В настоящее время я должен выполнить предварительный запрос чтобы узнать, какой это тип транспортного средства, используйте переключатель / кейс для создания экземпляра соответствующего класса. Я хотел бы уменьшить это, если это возможно, и исключить предварительный запрос; кажется, должен быть лучший способ сделать это.

Любые советы или предложения будут оценены. Я могу встроить либо PHP или C#.

1 Ответ

0 голосов
/ 29 января 2020

У вас может быть ссылка на базовый класс (автомобиль), но фактический тип должен быть известен при создании экземпляра. При необходимости вы можете ссылаться на этот фактический тип с помощью ссылки на базовый класс. пример (c#):

Vehicle myFactory(int type)
{
    Vehicle v = null;
    switch(type)
    {
    case 0:
       v = new Car();
       break;
    case 1:
       v = new Truck();
       break;
    }
    return v;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...