с# Переопределение метода ToString()
Я переопределил метод ToString() в базовом и производном классе, однако в объекте производного класса мне нужно вызвать переопределенный метод базового класса ToString(), как это сделать? Однако мне нужен переопределенный метод в производном классе такой какой он есть, я его использую (просто код урезал для читаемости)
public class Program
{
static void Main()
{
Cruise cruise = new Cruise();
Console.WriteLine(cruise.base.ToString());//Но так делать нельзя в статическом методе
}
}
public class Hotel
{
public override string ToString()
{
string s = "Свободных мест " + Convert.ToString(sv) + " " + "Занятых мест: " + Convert.ToString(reserved);
return s;
}
}
class Sanatory : Hotel
{
public override string ToString()
{
string s = "Кол-во медиков: " + Convert.ToString(medics);
return s;
}
}
class Cruise : Hotel
{
public override string ToString()
{
string s = "Осталось: " + Convert.ToString(stop) + " остановок";
return s;
}
}
}
Ответы (2 шт):
Автор решения: Igor
→ Ссылка
base.ToString();
class Sanatory : Hotel
{
public override string ToString()
{
string s = "Кол-во медиков: " + Convert.ToString(medics) +
Environment.NewLine + base.ToString();
return s;
}
}
Автор решения: QQQ
→ Ссылка
Через сокрытие производного метода, и приведение типа, вроде, получилось сделать, то что надо
public class Program
{
static void Main()
{
Cruise cruise = new Cruise();
Console.WriteLine(((Hotel)cruise).ToString());
}
}
public class Hotel
{
public override string ToString()
{
string s = "Свободных мест " + Convert.ToString(sv) + " " + "Занятых мест: " + Convert.ToString(reserved);
return s;
}
}
class Sanatory : Hotel
{
public override string ToString()
{
string s = "Кол-во медиков: " + Convert.ToString(medics);
return s;
}
}
class Cruise : Hotel
{
public new string ToString()
{
string s = "Осталось: " + Convert.ToString(stop) + " остановок";
return s;
}
}
}