我有一个继承自另一个的类,这两个类都将显示在列表框中并在列表框中显示一个字符串,这与父类中显示的不同
目前,这是来自子类
的覆盖public override string ToString()
{ //Return a String representing the object
return name + " " + address + " " + Arrivaltime1 + " " + DeliveryName1 + " " + DeliveryDest;
}
编辑:
仔细检查代码后。事实证明我没有将子类设置为公共
答案 0 :(得分: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'关键字允许您通过强制转换回基类来访问基类版本。