|
Переопределяем методы класса 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.
Источник: |
Категория: С# | Добавил: Sumrak (14.11.2010)
| Автор: E W
|
Просмотров: 1641 | Комментарии: 0
| Теги:
| Рейтинг: 0.0/0 |
|
|
|