[英]C# Base class constructor arguments
我學習C#。 我想看看實現繼承的最佳方法是什么。 我有一個Employee基類和一個PartTime派生類。 Employee類只接收名字和姓氏,並有一個打印全名的方法。
我想知道傳遞名字和姓氏的正確方法是什么,這樣當我只調用PartTime類時,我也應該能夠從調用程序中打印全名。 目前它顯示為空白全名:
class Program
{
static void Main(string[] args)
{
Employee emp = new Employee("John", "Doe");
// emp.PrintFullName();
PartTime pt = new PartTime();
float pay=pt.CalcPay(10, 8);
pt.PrintFullName();
Console.WriteLine("Pay {0}", pay);
Console.ReadKey();
}
}
public class Employee
{
string _firstName;
string _last_name;
public Employee(string FName, string LName)
{
_firstName = FName;
_last_name = LName;
}
public Employee() { }
public void PrintFullName()
{
Console.WriteLine("Full Name {0} {1} ", _firstName, _last_name);
}
}
public class PartTime : Employee
{
public float CalcPay(int hours, int rate)
{
return hours * rate;
}
}
您可以從派生類中調用基類構造函數,如下所示:
public class PartTime : Employee
{
public PartTime(string FName, string Lname)
: base(FName, LName)
{ }
}
然后創建它,
PartTime pt = new PartTime("Part", "Time");
嘗試這個:
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Employee(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
//method implementations removed for clarity
}
public class PartTime:Employee
{
public PartTime(string firstName, string lastName)
: base(firstName, lastName)
{
}
}
請注意,如果在PartTime
類中需要進一步的初始化邏輯,那么基本構造函數將在派生構造函數中的任何代碼之前運行。
您想要向PartTime添加一個構造函數,該構造函數將第一個和最后一個名稱傳遞給基礎構造函數
public PartTime(string fName, string lName) : base(fName, lName) {
}
或者,您可以在Employee上創建名字公共屬性,這些屬性將由PartTime繼承。 然后,您可以在創建任一實例時初始化它們,而無需維護PartTime構造函數。
class Program
{
static void Main(string[] args)
{
Employee emp = new Employee { FirstName = "John", LastName = "Doe" };
emp.PrintFullName();
PartTime pt = new PartTime { FirstName = "Jane", LastName = "Doe" };
float pay=pt.CalcPay(10, 8);
pt.PrintFullName();
Console.WriteLine("Pay {0}", pay);
Console.ReadKey();
}
}
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public void PrintFullName()
{
Console.WriteLine("Full Name {0} {1} ", FirstName, LastName);
}
}
public class PartTime : Employee
{
public float CalcPay(int hours, int rate)
{
return hours * rate;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.