我最近开始学习C#,遇到了一个问题。我对抽象/接口类还不太熟悉,但理解了基本原理和应用。
我目前正在学习C#的面向对象编程,我已经知道面向对象编程的机制,因为我在Java中已经学过了,但是在那里我从来没有使用过抽象或接口类。
我的代码旨在传入一个对象数组列表(都是共同父类的子类),并仅打印出该特定类别的对象。这个方法可以实现,但我很好奇是否可以让相同的方法打印出所有父类的子类,如果父类是抽象的话。
父类:
abstract class Person
{
protected string Name { get; set; }
protected int Age { get; set; }
public override string ToString() { return "Person:" + Name + ", " + this.Age; }
}
子类
class Student : Person
{
private int studID { get; set; }
private string school { get; set; }
public Student() { }
public Student(string name, int age, int studID, string school)
{
this.Name = name;
this.Age = age;
this.studID = studID;
this.school = school;
}
public override string ToString()
{
string s = "Student:" + Name + ", " + Age + ", " + studID + ", " + school;
return s;
}
}
方法调用
private static void StudentDetails(object type)
{
ArrayList tmp = new ArrayList();
//display all
//foreach (Person p in people) tmp.Add(p);
foreach (Person p in people)
{
if (type.GetType() == p.GetType())
{
tmp.Add(p);
}
}
//etc...