Основы C#. Урок 42. Переопределяем методы класса
System.Object
Часть методов класса System.Object, рассмотренных на
прошлом уроке, были виртуальными. Это значит, что мы можем
переписать их в классе-потомке. Давайте для примера перепишем
в нашем классе Vector метод ToString так, чтобы он возвращал
не имя класса, а координаты вектора в красивом виде. Это будет
выглядеть вот так: class Vector
{
public float x, y; //Координаты.
//Переопределяем метод ToString.
public override string ToString()
{
return "x = " + x +", y = " + y;
}
}
//Тестовый класс.
class App
{
static void Main()
{
Vector v=new Vector();
v.x=2;
v.y=3;
//Выводим координаты вектора.
Console.WriteLine(v.ToString());
}
}
А в следующем примере мы переопределим виртуальный метод
Equals таким образом, чтобы считать равными два вектора с
одинаковой длиной (вспомним теорему Пифагора): class Vector
{
...
//Переопределяем метод Equals.
public override bool Equals(object ob)
{
Vector t=(Vector)ob;
return (t.x*t.x+t.y*t.y)==(this.x*this.x+this.y*this.y);
}
}
//Тестовый класс.
class App
{
static void Main()
{
Vector v1=new Vector();
v1.x=2;
v1.y=3;
Vector v2=new Vector();
v2.x=-3;
v2.y=2;
Console.WriteLine(v1.Equals(v2));
}
}
В тестовом классе мы проверяем действие переопределенного
метода для равных по длине векторов (2, 3) и (-3, 2).
Указанный фрагмент выведет
True. |