我最近开始学习 c# 并遇到了一个问题。我对抽象/接口类不是很熟悉,但了解基本原理和应用。
我目前正在研究 C# 的 OOP,我已经知道 OOP 的机制,已经在 Java 中完成过,但也从未在那里使用过抽象类或接口类。
我的代码的目的是传入对象的 ArrayList(公共父类的两个子类)并仅打印出属于该特定类的那些对象。这行得通,但我很想知道是否可以使用相同的方法打印出父类的所有子对象,如果父类是抽象的。
家长班
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...