Преобразования типов C#

Недавно начала изучать C#, и возник вопрос по преобразованию типов. Есть два класса

class Person
{
    public string? Name { get; set; } 

    public Person(string? name)
    {
        Name = name;
    }

    public void PrintMessage()
    {
        Console.WriteLine($"Name - {Name}");
    }

}

и

class Employee:Person
{
    public string? Company { get; set; }
    public Employee(string? name, string? company)
    :base(name)
    {
        Company = company;
    }

}

И можно сделать такое преобразование

Employee Emp_1 = new Employee("Sam", "Google");
Person Per_1 = Emp_1;
Employee Emp_2 = (Employee)Per_1;

Но если пытаться сделать так

Person person = new Person("Bob");
Employee employee = (Employee) person;

То вылетит ошибка. И вот вопрос, почему так происходит. Ведь по сути, и там и там мы преобразовываем объект класса Person, в объект класса Employee


Ответы (0 шт):