Как получить доступ к унаследованному методу в C#? - PullRequest
0 голосов
/ 24 апреля 2020

Мне не хватает понятия о наследовании? Я пытаюсь вызвать метод, который находится в дочернем классе, но он не работает.

Это то, что у меня есть, так просто:

Vuelo.cs

 public class Vuelo
{
    private Aeronave _aeronave { get; set; }

    public Vuelo(string numero, Aeronave aeronave)
    {
        ValidarNumero(numero); // validates numero

        _aeronave = aeronave;
    }

    public string modelo_aeronave()
    {
        return _aeronave.model(); // This is where the error goes, .model()
    }

    public string RegistroAvion()
    {
        return _aeronave.Registration(); // This worked perfectly
    }
}

Aeronave.cs

 public class Aeronave
{
    private string _registration { get; set; }


    public Aeronave(string registration)
    {
        _registration = registration;
    }

    public string Registration()
    {
        return _registration;
    }

}

Airbus319.cs (дочерний класс):

 public class AirbusA319 : Aeronave
{
    private string _model { get; set; }

    public AirbusA319(string model, string registro) : base(registro)
    {
        _model = model;

    }

    public string model()
    {
        return _model;
    }
}

Я хочу показать модель аэробуса, которая находится в model() следующим образом:

Vuelo vuelo = new Vuelo("AB345", new AirbusA319("G-EUPT", "GG235"));
Console.WriteLine(vuelo.modelo_aeronave());

Я не могу найти решения в inte rnet, даже в Документы Microsoft о наследовании.

1 Ответ

1 голос
/ 24 апреля 2020

Вам необходимо изменить ваши классы, как показано ниже. Aeronave должен содержать модель (виртуальную или абстрактную), которая будет переопределена в Airbus.

public abstract class Aeronave
{
    private string _registration { get; set; }


    public Aeronave(string registration)
    {
        _registration = registration;
    }

    public string Registration()
    {
        return _registration;
    }
     public abstract string model();

}
public class AirbusA319 : Aeronave
{
    private string _model { get; set; }

    public AirbusA319(string model, string registro) : base(registro)
    {
        _model = model;

    }

    public override string model()
    {
        return _model;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...