Урок 42. Переопределяем методы класса System.Object
Автор: admin | 14 Июнь 2008 – 16:24 -Урок 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.
Tags: App, bool, Console, float, main, Object, Override, Vector, void, WriteLine
Находится в Уроки C# | No Comments »
Ответить
Вы должны быть в системе, дабы комментировать.
