Пока не думайте об этом как Person ps = new Student()
.
Реальное преимущество заключается в возможности абстрагировать общий код для всех типов Person
.Таким образом, ваши методы могут потребовать Person
, потому что это все, что нужно, и будет работать с любым типом человека, который вы создаете, например Janitor
, Teacher
и т. Д.
var myStudent = new Student()
VerifyAge(myStudent);
VerifyYearOfStudy(myStudent);
public bool VerifyAge(Person person)
{
return person.Age < 200;
}
public bool VerifyYearOfStudy(Student student)
{
return student.YearOfStudy <= DateTime.Now.Year;
}
Чтобы устранить некоторую путаницуединственный раз, когда вы действительно объявляете основание в методе, это когда вы действительно хотите указать, что эта переменная предназначена только для использования в качестве этого конкретного типа.Думайте об этом, как будто вы объявили свою переменную, используя интерфейс.Конечно, я работаю с экземпляром Student
, но я работаю с ним только как экземпляр Person
или как IPerson
.
Обычно в качестве переменной в методе вы этого не сделаете, потому чтов значительной степени стандарт defacto - это просто использовать var
для всего в наше время.Если вы делаете выбор для определения Person
, обычно это свойства, возвращаемые значения метода и параметры метода.Локальная переменная не очень важна.