-2

我有一个类从另一个类继承,这两个类都将显示在列表框中,并在列表框中显示一个字符串,这与父类中显示的不同

目前,这是子类的覆盖

public override string ToString()
    {   //Return a String representing the object


        return name + " " + address + " " + Arrivaltime1 + " " + DeliveryName1 + " " + DeliveryDest;

    }

编辑:

仔细检查代码后。事实证明我没有将子类设置为公共

4

1 回答 1

1

您可以获得一些灵活性,具体取决于您在派生类中声明 ToString() 方法的方式。

public class MyBase
{
    public override string ToString()
    {
        return "I'm a base class";
    }
}
public class MyFixedChild : MyBase
{
    public override string ToString()
    {
        return "I'm the fixed child class";
    }
}
public class MyFlexiChild : MyBase
{
    public new string ToString()
    {
        return "I'm the flexi child class";
    }
}

public class MyTestApp
{
    public static void main()
    {
        MyBase myBase = new MyBase();
        string a = myBase.ToString();                 // I'm a base class

        MyFixedChild myFixedChild = new MyFixedChild();
        string b = myFixedChild.ToString();           // I'm the fixed child class
        string c = ((MyBase)myFixedChild).ToString(); // I'm the fixed child class

        MyFlexiChild myFlexiChild = new MyFlexiChild();
        string d = myFlexiChild.ToString();           // I'm the flexi child class
        string e = ((MyBase)myFlexiChild).ToString(); // I'm a base class
    }
}

'override' 关键字将锁定 ToString 方法,因此即使您转换回基类,它也将始终使用函数的派生版本。

'new' 关键字将允许您通过转换回基类来访问基类版本。

于 2013-06-14T15:44:40.687 回答