Виртуальная функция выводит неправильные значения - C#
Формулировка задачи:
Рост и вес выводит 0, как исправить?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace Виртуальные_методы
{
class Person
{
private double rost, ves;
private string FName, Lname, Mname;
public Person(string Fname, string Lname, string Mname, double rost, double ves)
{
this.FName = Fname;
this.Lname = Lname;
this.Mname = Mname;
}
public virtual void Pasport()
{
Console.WriteLine("Фамилия {0} Имя {1} Отчество {2} Рост {3} Вес {4}", Lname, FName, Mname, rost, ves);
}
}
class Student : Person
{
private int mark, course;
private double rost, ves;
private string FName, Lname, Mname;
public Student(int mark, int course, string Fname, string Lname, string Mname, double rost, double ves)
: base(Fname, Lname, Mname, rost, ves)
{
this.mark = mark;
this.course = course;
}
public override void Pasport()
{
base.Pasport();
Console.WriteLine("Отметка {0} курс {1}", mark, course);
}
}
class Teacher : Person
{
private string obr, dolj;
private double rost, ves;
private string FName, Lname, Mname;
public Teacher(string obr, string dolj, string Fname, string Lname, string Mname, double rost, double ves)
: base(Fname, Lname, Mname, rost, ves)
{
this.obr = obr;
this.dolj = dolj;
}
public override void Pasport()
{
base.Pasport();
Console.WriteLine("Образование {0} Должность {1}", obr, dolj);
}
}
class Program
{
static void Main(string[] args)
{
Student[] ss = new Student[3];
Teacher[] tt = new Teacher[3];
ss[0] = new Student(10, 1, "Иван", "Иванов", "Витальевич", 170, 50);
ss[1] = new Student(8, 1, "Иван", "Иванов", "Викторович", 180, 80);
ss[2] = new Student(3, 2, "Иван", "Иванов", "Сергеевич", 200, 90);
tt[0] = new Teacher("Высшее", "Доцент", "Петя", "Петров", "Сергеевич", 175, 70);
tt[1] = new Teacher("Высшее", "Преподаватель", "Петя", "Петров", "Александрович", 195, 80);
tt[2] = new Teacher("Среднее", "Доктор", "Петя", "Петров", "Иванович", 200, 90);
ArrayList footballteam = new ArrayList();
for (int i = 0; i < 3; i++)
{
footballteam.Add(ss[i]);
footballteam.Add(tt[i]);
}
Console.Clear();
Console.WriteLine("Студенты");
foreach (Student l in ss)
{
l.Pasport();
}
Console.ReadLine();
Console.Clear();
Console.WriteLine("Преподаватели");
foreach (Teacher t in tt)
{
t.Pasport();
}
Console.ReadLine();
Console.Clear();
Console.WriteLine("Комманда");
foreach (Person p in footballteam)
{
p.Pasport();
}
Console.ReadLine();
}
}
}Решение задачи: «Виртуальная функция выводит неправильные значения»
textual
Листинг программы
class Person
{
protected double rost, ves;
protected string FName, Lname, Mname;
public Person(string Fname, string Lname, string Mname, double rost, double ves)
{
this.FName = Fname;
this.Lname = Lname;
this.Mname = Mname;
this.rost = rost;
this.ves = ves;
}
public virtual void Pasport()
{
Console.WriteLine("Фамилия {0} Имя {1} Отчество {2} Рост {3} Вес {4}", Lname, FName, Mname, rost, ves);
}
}