Что не так с данным кодом?
class Point
{
protected int x;
protected int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public virtual void Show() { Console.WriteLine("I am Point"); }
}
class Line : Point
{
string name;
public Line(string name, int x, int y): base(x,y)
{
this.name = name;
}
public override void Show()
{
base.Show();
Console.WriteLine("I am Line");
Console.WriteLine($"name={name} x={x} y={y}");
}
}
Преподаватель говорит что что-то не так с переопределенным методом show, поля выводятся как-то не так, как надо, как делают все "крутые" программисты, объясните, люди которые на зубок знают Рихтера, что не так, пожалуйста?
Изначальная задача 2. Дополнить необходимым кодом классы и Main. В консоль должно вывести:
I am Point
I am Line
name=AB x=2 y=3;
class Point
{
int x;
int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public virtual void Show(){ Console.WriteLine(“I am Point”);}
}
class Line : Point
{
string name;
}
Main(){
Point pl=new Line(“AB”,2,3);
}
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
как делают все "крутые" программисты
Они умеют переопределять ToString() и использовать свойства. Я отойду от условия задачи, и покажу, как это может работать. А вы просто используйте приемы, если они окажутся полезными.
class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y)
{
X = x;
Y = y;
}
public override string ToString()
{
return $"Point at {X}, {Y}";
}
}
class Line
{
public Point Start { get; }
public Point End { get; }
public Line(Point start, Point end)
{
Start = start;
End = end;
}
public override string ToString()
{
return $"Line from {Start} to {End}";
}
}
Тогда можно написать такой код
static void Main(string[] args)
{
Point a = new Point(2, 5);
Point b = new Point(7, 10);
Line line = new Line(a, b);
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(line);
Console.ReadKey();
}
А вывод в консоль будет вот такой
Point at 2, 5
Point at 7, 10
Line from Point at 2, 5 to Point at 7, 10