Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
18
Добавлен:
12.02.2015
Размер:
254.98 Кб
Скачать

Расширенные концепции в C#

Глава 5

Обзор

Глава 4 – реализация концепций ООП в языке C#

Параметризованные конструкторы – это конструкторы которые передают параметры.

Мы передаем либо различное количество аргументов, либо задаем различные типы для параметров, передаваемых в конструктор для того чтобы различать конструкторы во время выполнения программы.

В C# деструкторы вызываются сборщиком “мусора” (Garbage Collector).

Методы в C# могут быть перегружены двумя способами.

Определением различного количества параметров метода

Определением различных типов параметров метода

C# позволяет перегружать операторы.

Перегрузка оператора предполагает альтернативное функционирование оператора, отличающееся от обычного стандартного действия (для примера оператор сложения +) при использовании его с определенными объектами классов или со структурами.

C# не поддерживает множественное наследование.

Для замещения существующего метода базового класса мы объявляем в производном классе новый метод с тем же именем, предваряя имя ключевым словом new.

.NET Framework and C# Programming Language \ Chapter 5 \ 2 of

Цели

Объяснить что такое полиморфизм (Polymorphism)

Использование виртуальных функций

Рассмотреть, что такое абстрактные базовые классы

Изложить концепцию Интерфейсов (Interfaces)

Использование Интерфейсов (Interfaces)

.NET Framework and C# Programming Language \ Chapter 5 \ 3 of

Полиморфизм в C#

Полиморфизм и виртуальные функции существуют

“рука об руку”

Позволяет изменять реализацию методов

производного класса во время выполнения

программы

Виртуальные функции позволяют производному классу замещать полностью или частично функциональные возможности методов базового

public class ShapeObj

{

public virtual void area()

{

System.Console.WriteLine("This is the Virtual Area method");

}

}

.NET Framework and C# Programming Language \ Chapter 5 \ 4 of

Полиморфизм в C#

Вызывая метод Func() из базового класса Base мы вызываем виртуальный метод Func() наследуемого класса Derived

Объект класса

Base

.NET Framework and C# Programming Language \ Chapter 5 \ 5 of

Полиморфизм в C# - пример

public class Circle : ShapeObj

{

public override void area()

{

System.Console.WriteLine("This is the Area() method of Circle");

}

}

public class Rectangle : ShapeObj

{

public override void area()

{

System.Console.WriteLine("This is the Area() method of Rectangle");

}

}

public class Square : ShapeObj

{

public override void area()

{

System.Console.WriteLine("This is the Area() method of Square");

}

}

.NET Framework and C# Programming Language \ Chapter 5 \ 6 of

Полиморфизм в C# -

пример

public class PolymorphismExp

{

public static void Main()

{

ShapeObj[] objArray = new ShapeObj[4];

objArray[0] = new ShapeObj(); objArray[1] = new Rectangle();

objArray[2] = new Circle(); objArray[3] = new Square();

foreach (ShapeObj iterateArray in objArray)

{

iterateArray.area();

}

}

}

.NET Framework and C# Programming Language \ Chapter 5 \ 7 of

Полиморфизм в C# - пример 2

class SecondExp

{public int firstMethod()

{ return(secondMethod()*thirdMethod()); }

public virtual int secondMethod()

{ return(10);

}

public int thirdMethod()

{ return(20);

} }

class DerivedClass : SecondExp

{

 

public override int secondMethod()

{ return(30);

}

}

 

class Test

 

{

 

public static void Main()

{

 

DerivedClass objDerived = new DerivedClass();

System.Console.WriteLine(objDerived.firstMethod());

}

Programming Language \ Chapter 5 \ 8 of

}

 

Что необходимо запомнить

Полиморфизм является не просто замещением, это интеллектуальное замещение

При полиморфизме решение о том какой метод должен быть вызван принимается во время выполнения программы

Полиморфизм требует использование виртуальных функций, а виртуальные функции, в свою очередь требуют замещение методов

.NET Framework and C# Programming Language \ Chapter 5 \ 9 of

Абстрактные базовые классы

Абстрактные классы это классы, которые могут быть наследуемыми

Хотя экземпляры объектов абстрактного класса не могут быть созданы

C# позволяет создание абстрактных базовых классов с помощью добавления модификатора abstract к определению класса

.NET Framework and C# Programming Language \ Chapter 5 \ 10 o

Абстрактные базовые классы - пример

using System;

abstract class BaseClass

{public abstract void abstractFunc(); public void nonAbstractFunc()

{Console.WriteLine("This is the nonAbractFunc() method!"); }

}

class DerivedClass : BaseClass

{public override void abstractFunc()

{

Console.WriteLine("This is the abstractFunc() method!");

}

}

class Test

{

static void Main()

{DerivedClass objDerived = new DerivedClass(); BaseClass objBase = objDerived; objBase.abstractFunc(); objDerived.nonAbstractFunc();

}

.NET Framework and C# Programming Language \ Chapter 5 \ 11 o

Соседние файлы в папке Инструментальные средства