私は最近c#の学習を開始し、問題に遭遇しました。私はabstract/interfaceクラスにあまり精通していませんが、基本的な原則とアプリケーションを理解しています。
私は現在、C#のOOPを検討しています。これは、Javaで実行したことのある、OOPの仕組みをすでに知っていますが、抽象クラスやインターフェイスクラスも使用したことがありません。
私のコードの目的は、オブジェクトの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...