c# - c#关于多态性的错误。在程序结束时使用Get String()方法它说没有像obj.earnings()这样的方法
问题描述
namespace OOPHomework
{
public partial class EmployeeTestForm : Form
{
public EmployeeTestForm()
{
InitializeComponent();
//Construct objects of different types
Boss boss = new Boss("John", "Smith", 800);
CommissionWorker commissionWorker =
new CommissionWorker("Sue", "Jones", 400, 3, 150);
PieceWorker pieceWorker = new PieceWorker("Bob", "Lewis",
Convert.ToDecimal(2.5), 200);
HourlyWorker hourlyWorker = new HourlyWorker("Karen",
"Price", Convert.ToDecimal(13.75), 50);
//Declare a reference and use it to process boss object
Employee employee = boss;
string output = GetString(employee) + boss + " earned " +
boss.Earnings().ToString("C") + "\n\n";
//Use reference to process commission Worker object
employee = commissionWorker;
output += GetString(employee) + commissionWorker +
" earned " +
commissionWorker.Earnings().ToString("C") + "\n\n";
//Use reference to process pieceWorker object
employee = pieceWorker;
output += GetString(employee) + pieceWorker +
" earned " + pieceWorker.Earnings().ToString("C") +
"\n\n";
//Use reference to process hourlyWorker object
employee = hourlyWorker;
output += GetString(employee) + hourlyWorker +
" earned " + hourlyWorker.Earnings().ToString("C") +
"\n\n";
displayLabel.Text = output;
}
// return string that contains Employee information
public static string GetString(object emp)
{
return emp.ToString() + " earned " + ***emp.Earnings()***.ToString("C") + "\n";
}
}
}`
这里它说没有像emp.Earnings()
. 但是,在我的代码中,每个班级都有一个单独的收入函数。
解决方案
这里它说没有像 emp.Earnings() 这样的方法。但是在我的代码中,每个类都有一个单独的收益函数。
public static string GetString(object emp)
作为传递的对象object emp
实际上有一个emp.Earnings()
作为 Employee的方法,
而不是作为一个对象。您的对象所具有的方法、属性等取决于您如何对待该对象。在这种情况下,您希望将您object emp
视为 Employee,为此您需要使用强制转换表达式。
// return string that contains Employee information
public static string GetString(object obj)
{
Employee emp = obj as Employee;
if (emp != null)
return emp.ToString() + " earned " + emp.Earnings().ToString() + "\n";
else return "Object is not an employee!";
}
推荐阅读
- r - 建立文件中唯一行的表以及观察每个唯一行的次数
- python - Pyspark CountVectorizer 和语料库中的词频
- json - 从 Statista 网站 Python 抓取数据
- jsp - 如何在primefaces数据表中显示字符串数组?
- email - 响应式 3 列 html 电子邮件布局最后一列图像在 gmail 和 Outlook 中太高一个像素
- javascript - 用于下载文件的烧瓶 html 链接
- android - 无法在 Ionic App 中查看本地 PDF 文件(使用 ng2-pdf-viewer)
- php - 异步PHP SOAP服务器在响应之前发送确认消息?
- python - 在 Python 中输出扩展总和和反向扩展总和
- c# - jQuery datatable c# 服务器端默认排序列给出null