Справочник от Автор24
Поделись лекцией за скидку на Автор24

Полиморфизм. Абстрактные классы

  • 👀 805 просмотров
  • 📌 763 загрузки
Выбери формат для чтения
Статья: Полиморфизм. Абстрактные классы
Найди решение своей задачи среди 1 000 000 ответов
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Полиморфизм. Абстрактные классы» pdf
Полиморфизм. Абстрактные классы. 1) Виртуальные методы на C#. Полиморфизм. Полиморфизм – разнообразие форм биологических существ. Нечто одинаковое по форме, но совершенно разные по поведению. Имеем базовый класс Record и производный Sprint с полем dec. Выполним перегрузку метода Numbersec. Numbersec объявим виртуальнам методом. На C# виртуальные методы такие же как на C++ Record.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Record { protected int min, sec; public Record(int m, int s) { min = m; sec = s; } public int Numbersec() { return 60 * min + sec; } public bool qualification() { int k; k = Numbersec(); if (k <= 127) return true; else return false; } } } 1 Sprint.cs class Sprint:Record { private int dec; public Sprint(int m, int s, int d):base(m,s) { dec = d; } public int Numbersec() { int k; k = 60 * min + sec; if (dec >= 5) k++; return k; } } Program.cs class Program { static void Main(string[] args) { Record a = new Record(2, 7); Sprint b = new Sprint(2, 7, 8); bool f1, f2; f1 = a.qualification(); f2 = b.qualification(); } } f1=true f2=true - qualification() -> Numbersec() из базового класса Numbersec() - виртуальная функция Record.cs using System; using System.Collections.Generic; ...... virtual public int Numbersec() { ....... 2 Sprint.cs class Sprint:Record { .......... public override int Numbersec() // override - перегружена { ......... Program.cs class Program { static void Main(string[] args) { Record a = new Record(2, 7); Sprint b = new Sprint(2, 7, 8); bool f1, f2; f1 = a.qualification(); f2 =b.qualification(); } } f2=false ! Объект b производного класса [ b.qualification();] определяет вызов Numbersec() из производного класса Sprint 2) Вызов виртуальной функции на C# после присваивания указателей. Пусть Numbersec не виртуальная функция, перегружена в Sprint с округлением. вызов метода динамическим объектом: static void Main(string[] args) { Record b = new Record(2,7); Sprint d = new Sprint(2, 7, 8); b=d; k=b.Numbersec(); // k=127 Numbersec() - виртуальная k = b.Numbersec(); // k=128 3 3) Абстрактные классы и функции на C#. На C# имеются виртуальные функции как на C++ (virtual) и абстрактные (abstract) как на Java. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { abstract class Figure // абстрактный класс { protected double X, Y, L; // координаты центра и длина public double GetLen() { return L; } public Figure(double xx, double yy, double ll) { X = xx; Y = yy; L = ll; } public abstract double S(); // абстрактная функция } class Circle : Figure // производный не абстрактный класс { public Circle(double xx,double yy,double ll):base(xx,yy,ll) { } public override double S() // перегрузка абстрактной функции { return 3.1415926*L*L; } }; class Square : Figure // производный не абстрактный класс { public Square(double xx, double yy, double ll): base(xx, yy, ll) { } public override double S() // перегрузка абстрактной функции { return L * L; } 4 }; class Triangle : Figure // производный не абстрактный класс { public Triangle(double xx, double yy, double ll): base(xx, yy, ll) { } public override double S() // перегрузка абстрактной функции { return L * L * Math.Sqrt(3.0) / 8; } }; class Program { static void Main(string[] args) { double yc, ys, yt; Circle c = new Circle(3, 4, 5); yc = c.S(); Square s = new Square(3, 4, 5); ys = s.S(); Triangle t = new Triangle(3, 4, 5); yt = t.S(); // Figure f = new Figure(3, 4, 5); } } } 5
«Полиморфизм. Абстрактные классы» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач

Тебе могут подойти лекции

Смотреть все 588 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot