私はOOADを学んでおり、継承を使用してクラス関係を実装しようとしていますが、コードに問題があります
親クラス
namespace ConsoleApplication1
{
abstract class Classification
{
public abstract string type();
}
}
第1子クラス
namespace ConsoleApplication1
{
class FullTime : Classification
{
bool inCampus;
string roomDetail;
float rent;
public FullTime(string studentRoomDetail, float studentRent)
{
this.inCampus = true;
this.roomDetail = studentRoomDetail;
this.rent = studentRent;
}
public FullTime()
{
this.inCampus = false;
}
public string printAccommodationDescription()
{
if (!this.inCampus)
{
return "Not in campus";
}
else
{
return "Room: " + this.roomDetail + " Rent: " + this.rent.ToString();
}
}
public override string type()
{
return "fulltime";
}
}
}
第2子クラス
namespace ConsoleApplication1
{
class PartTime : Classification
{
bool onJob;
string jobTitle;
float salary;
public PartTime(string studentJobTitle, float studentSalary)
{
this.onJob = true;
this.jobTitle = studentJobTitle;
this.salary = studentSalary;
}
public PartTime()
{
this.onJob = false;
}
public string printJobDescription()
{
if (!this.onJob)
{
return "Not on job";
}
else
{
return "JobTitle: " + this.jobTitle + " Salary: " + this.salary.ToString();
}
}
public override string type()
{
return "parttime";
}
}
}
クラスからメソッドにアクセスしようとしたときにProgram.csにprintJobDescription
PartTime
Classification classification = new PartTime("Software Engineer", 10000);
classification.printJobDescription();
それは言う
エラー CS1061 'Classification' には 'printAccommodationDescription' の定義が含まれておらず、タイプ 'Classification' の最初の引数を受け入れる拡張メソッド 'printAccommodationDescription' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)
この問題を解決するにはどうすればよいですか?
アップデート
実行時にオブジェクトのクラスを変更できるようにする必要があるため、型のオブジェクトを作成しClassification
、他のクラスに実装されていないいずれかのメソッドを使用する必要があります