c# - C#如何在父类的方法中调用子类的字段

标签 c# inheritance

我想在 Detail() 的继承方法中打印调用的(其中任何一个)子类的薪水。在这种情况下不能这样做。我将如何获得员工的所有其他详细信息的薪水。

这是代码

using System;

class Employee
{
    public int ID;
    public string Name;
    public string Gender;
    public string City;

    public void Detail()
    {
        Console.WriteLine("Name: {0} \nGender: {1} \nCity: {2} \nID: {3}", Name, Gender, City, ID); //I want to get Yearly or Hourly Salary with these all
    }
}

class PermanatEmp : Employee
{
    public float YearlySalary;

}

class TempEmp : Employee
{
    public float HourlySalary;
}



class Class4
{
    static void Main()
    {
        PermanatEmp pe = new PermanatEmp();
        pe.ID = 101;
        pe.Name = "XYZ";
        pe.Gender = "Male";
        pe.City = "London";
        pe.YearlySalary = 20000;
        pe.Detail(); // how to get Salary with these all 


    }

}

最佳答案

您不能也不应该 - 无法保证雇员 薪水。

相反,任何确实有薪水的类都可以覆盖ToString 以包括它想要的所有属性。顺便说一下,我建议重写 ToString 而不是使用只打印信息的 Detail 方法。

(作为旁注,我强烈建议您不要使用公共(public)可写字段。Use properties instead。)

关于c# - C#如何在父类的方法中调用子类的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31725406/

相关文章:

c# - 为什么我不能用 List<Tuple<string, bool>> 实例化 List<Object>?

c# - 我可以在 AutoMapper 中集中我想忽略的映射吗?

c# - 创建 DAL 对象的建议

c# - 您可以将 SQLMetal 等 LINQ 工具与 Access 数据库一起使用吗?

java - 在延迟初始化和一般情况下,覆盖可以有效替代 if 语句吗?

C# 创建错误检查类?

c# - 继承和new关键字

C++继承无法识别

c++ - 派生类C++访问派生类的基类

java - 如何使用父类从子类获取参数?