Сейчас на сайте:
Пользователей: 0
Отсутствуют.
Роботов: 2
Googlebot, Yandex
Гостей: 73
Всех: 75
ВНИМАНИЕ! Конкурс по программированию!
Проект Programmers.kz и школа hotPen3D2D предлагает Вам курсы по веб-дизайну, веб-программированию и компьютерной графике. Подробности здесь.
Информация к новости
- Просмотров: 921
- Автор: КазКиберГетик
Урок 42. Переопределяем методы класса System.Object
Категория: Программирование » C# » Уроки C#
Часть методов класса System.Object, рассмотренных на прошлом уроке, были виртуальными. Это значит, что мы можем переписать их в классе-потомке. Давайте для примера перепишем в нашем классе Vector метод ToString так, чтобы он возвращал не имя класса, а координаты вектора в красивом виде. Это будет выглядеть вот так:
А в следующем примере мы переопределим виртуальный метод Equals таким образом, чтобы считать равными два вектора с одинаковой длиной (вспомним теорему Пифагора):
В тестовом классе мы проверяем действие переопределенного метода для равных по длине векторов (2, 3) и (-3, 2). Указанный фрагмент выведет True.
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());
}
}
{
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));
}
}
{
...
//Переопределяем метод 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.
Вернуться
Комментариев: 0
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.




