问题描述
我正在尝试使用继承和多态性从数组中进行打印...等
该练习是一个从Person类继承而来的学生和教师类,但是通过覆盖两个类中的print方法,它们显示出不同的结果。教师班从字符串变量打印,而学生班从字符串变量和字符串数组打印。我能够打印所有内容,但我打印字符串数组的部分却得到了System.String [],据我了解,这是因为它打印的是对象的名称而不是值。我尝试重写To.String方法以将其传递给printDetails方法,但是由于我的printDetails方法具有返回类型void,因此我无法做到这一点。
下面是我的代码供参考:
Program.cs:
namespace Task3
{
class Program
{
static void Main(string[] args)
{
var people = new List<Person>();
string[] subjects = { "Math","Science","English" };
string studentName = "Sue";
Student student = new Student(studentName,subjects);
people.Add(student);
string faculty = "Computer Science";
string teacherName = "Tim";
Teacher teacher = new Teacher(teacherName,faculty);
people.Add(teacher);
foreach (var element in people)
{
element.PrintDetails();
}
Console.ReadKey();
}
}
}
Person.cs:
namespace Task3
{
public abstract class Person
{
protected string _name;
public Person(){}
public Person(string name)
{
_name = name;
}
public abstract void PrintDetails();
}
}
Student.cs:
namespace Task3
{
public class Student : Person
{
private string[] _subjects;
public Student(string name,string[] subjects) : base(name)
{
_subjects = subjects;
}
public override void PrintDetails()
{
Console.WriteLine("Hi my name is " + _name + " and I am studying " + _subjects);
}
}
}
Teacher.cs:
namespace Task3
{
public class Teacher : Person
{
private string _faculty;
public Teacher(string name,string faculty) : base(name)
{
_faculty = faculty;
}
public override void PrintDetails()
{
Console.WriteLine($"Hi my name is {_name} and I teach in the {_faculty} faculty");
}
}
}
下面是我得到的输出,我应该得到的输出:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)