Содержание
- 2. Полиморфизм Виртуальным называется такой метод, который в базовом классе объявляется с помощью ключевого слова virtual, указываемого
- 3. Полиморфизм Процесс повторного определения виртуального метода в производном классе называется переопределением метода. При переопределении имя, возвращаемый
- 4. Пример 1 namespace WindowsFormsApp { public partial class Form1 : Form { Base baseRef; // ссылка
- 5. Пример 1 private void button4_Click(object sender, EventArgs e) { // Метод Who() в классе Derived1 Derived1
- 6. Пример 1 class Base { public virtual string Who() { // Создать виртуальный метод в базовом
- 7. Пример 2 using System; class Base { public virtual void Who() { // Создать виртуальный метод
- 8. Пример 2 class Derived2 : Derived1{ // В этом классе метод Who() не переопределяется } class
- 9. Пример 3 using System; class TwoDShape { double pri_width; double pri_height; public TwoDShape() { // Конструктор
- 10. Пример 3 public TwoDShape(double x, string n) { // Сконструировать объект равной ширины и высоты Width
- 11. Пример 3 public double Width { // Свойства ширины и высоты объекта get { return pri_width;
- 12. Пример 3 class Triangle : TwoDShape { // Класс для треугольников string Style; public Triangle() {
- 13. Пример 3 class Rectangle : TwoDShape { // Конструктор для класса Rectangle public Rectangle(double w, double
- 14. Пример 3 class DynShapes { static void Main() { TwoDShape[] shapes = new TwoDShape[5]; shapes[0] =
- 15. Полиморфизм В С# имеется возможность предотвратить наследование класса с помощью ключевого слова sealed. Класс не допускается
- 16. Пример 5 class В { public virtual void MyMethod() { /* ... */ } } class
- 17. Класс object В С# предусмотрен специальный класс object, который неявно считается базовым классом для всех остальных
- 18. Класс object Метод Назначение public virtual bool Equals (object ob) - Определяет, является ли вызывающий объект
- 19. Класс object Метод Назначение public Type GetType () - Получает тип объекта во время выполнения программы
- 20. Пример 6 class MyClass { static int count = 0; int id; public MyClass () {
- 21. Пример 6 class Test { static void Main() { MyClass ob1 = new MyClass(); MyClass ob2
- 22. Класс object Все типы в С#, включая и простые типы значений, являются производными от класса object.
- 23. Пример 7 class BoxingDemo { static void Main() { int x; object obj; х = 10;
- 24. Пример 8 class BoxingDemo { static void Main() { int x; x = 10; Console.WriteLine("Значение х
- 25. Пример 9 // Благодаря упаковке становится возможным // вызов методов по значению! using System; class MethOnValue
- 26. Пример 10 class GenericDemo { static void Main() { object[] ga = new object[10]; // Сохранить
- 27. Пример 10 Выполнение этой программы приводит к следующему результату: ga [ 0] : 0 ga [1]
- 28. Класс object Несмотря на то что универсальный характер класса object может быть довольно эффективно использован в
- 29. Контрольные вопросы 1. Каким образом реализуется динамический полиморфизм? 2. Каково назначение абстрактных методов и классов? 3.
- 30. Виртуальные, переопределяющие и абстрактные методы Если объявление метода экземпляра содержит модификатор virtual, метод является виртуальным методом.
- 31. Виртуальные, переопределяющие и абстрактные методы Вместе с ключевым словом override может также использоваться и ключевое слово
- 32. Виртуальные, переопределяющие и абстрактные методы Абстрактным называется виртуальный метод без реализации. Объявление абстрактного метода осуществляется с
- 33. Пример 16 public abstract class Expression{ public abstract double Evaluate(Hashtable vars); } public class Constant: Expression{
- 34. Пример 16 public class VariableReference: Expression{ string name; public VariableReference(string name) { this.name = name; }
- 35. Пример 16 public class Operation: Expression{ Expression left; char op; Expression right; public Operation(Expression left, char
- 36. Пример 16 public override double Evaluate(Hashtable vars){ double x = left.Evaluate(vars); double y = right.Evaluate(vars); switch
- 37. Пример 16 Четыре приведенных выше класса могут использоваться для моделирования арифметических выражений. Например, с помощью экземпляров
- 38. Пример 16 class Test{ //классы Expression используются для вычисления // выражения x * (y + 2)
- 40. Скачать презентацию