我最近開始學習c#並遇到了一個問題。我對抽象/接口類不是很熟悉,但卻理解了基本原理和應用。我已經知道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...
你會知道在編譯時的類型? –