c为什么可以';我们是否覆盖静态属性?(高级类如何用高级数据调用基类方法)

本文关键字:何用高 高级类 数据 类方法 基类 调用 属性 为什么 静态 覆盖 是否 | 更新日期: 2023-09-27 18:28:34

我的问题可能措辞不好,可能是个骗局,但我来

class person {
    protected static string request = "select * from person where gender in ('male','female')";
    public string sharedmethod()
    {
        return "the request is" + request;
    }
}
class man:person
{
    override protected static string request = "select person.*,man.* from person,men where mytype in ('male') ";
    DateTime dateOfFirstCar;
}
class woman:person
{
    override protected static string request = "select person.*,woman.* from person,women where mytype in ('female') ";
    DateTime dateOfFirstITBAG;
}
class Program
{
    static void Main(string[] args)
    {
        if (new person().sharedmethod() == new man().sharedmethod())
            Console.Write("too bad query is the same in base and dervide class");
    }
}

男人就是一个人
女人就是一个人
人,男人,女人存在于我的数据库中,但需要不同的查询

我不想重复这些查询,所以我认为将它们存储在每个类的静态属性中是个好主意。

我在基类中得到了一些低级别的东西(没有显示)(因为我不想重复),我希望继承的类在继承类的上下文中调用基类方法

我想要man.[herited]somemethod()来执行person.somemethod(

感谢

c为什么可以';我们是否覆盖静态属性?(高级类如何用高级数据调用基类方法)

添加一个覆盖静态字符串的非静态属性,并引用该属性:

class person {
    private const string request = "select * from person where gender in ('male','female')";
    protected virtual string Request {get {return request;}}
    public string sharedmethod() {
        return "the request is" + Request;
    }
}
class man:person {
    private const string request = "select person.*,man.* from person,men where mytype in ('male') ";
    protected override string Request {get {return request;}}
    DateTime dateOfFirstCar;
}
class woman:person {
    private const string request = "select person.*,woman.* from person,women where mytype in ('female') ";
    protected override string Request {get {return request;}}
    DateTime dateOfFirstITBAG;
}