
- •Обзор
- •Цели
- •Конструкторы - Пример
- •Параметризованные
- •Сборщик “мусора” (Garbage Collector)
- •Сборщик “мусора” (Garbage Collector)
- •Перегрузка (Overloading) методов
- •Перегрузка методов с
- •Перегрузка методов с
- •Перегрузка
- •Перегрузка
- •Одиночное
- •Запирание (Sealing) класса
- •Замещение (Overriding) метода
- •Резюме

Перегрузка методов с
различными типами параметров
...
public void AreaCal(int radius)
{
areaVal = (22/7)* radius*radius;
}
public void AreaCal(string shapeName)
{
Console.WriteLine("Area of {0} not calculated ",shapeName);
}
...

Перегрузка
операторов
Перегрузка оператора предполагает альтернативное функционирование оператора, отличающееся от обычного стандартного действия
…
//line 1
int result = Decimal.Add(54, 200); //line 2
int result2 = 54 + 200;
…
Перегрузка операторов позволяет делать запись
выражений наглядными и простыми для понимания
Список операторов которые могут быть перегружены

Перегрузка
операторов
using System;
public struct Distance
{
public Distance(int lon, int mag)
{
this.longitude = lon; this.latitude = mag;
}
int longitude, latitude;
public static Distance operator - (Distance first, Distance second)
{
return new Distance(first.longitude - second.longitude, first.latitude - second.latitude);
}
//main
}
public static void Main()
{
Distance start = new Distance(); Distance newDistance = new
Distance();
Distance finish = new Distance(); start.longitude = 12; start.latitude = 10;
finish.longitude = 2; finish.latitude = 1; newDistance = start - finish;
Console.WriteLine("The Finish is {0} Degrees East and {1} Degrees North of the Start.",
.latitude);
Наследование в C#
Объявление и использование нового класса, как потомка другого класса
Помогает избежать постоянного переписывания исходного кода
Обеспечивает все преимущества повторного использования кода
Существует два типа наследования
Одиночное наследование
Множественное наследование

Одиночное
наследование
using System; |
|
|
class CharacterVal |
|
|
{ |
|
|
public int setCharVal(char ch) |
|
|
{ |
|
|
char charVal=ch; |
|
|
Console.WriteLine("The Entered charcter is :{0}",charVal); |
|
|
return(0); |
class Inheritance |
|
} |
{ |
|
} |
static void Main() |
|
class StringVal : CharacterVal |
{ |
|
{ |
StringVal object1 |
= new StringVal(); |
public string strVal; |
Object1.setCharVal('j'); |
|
public int setStrVal(string str) |
Object1.setStrVal("enjoy"); |
|
} |
|
|
{ |
} |
|
strVal=str; |
|
|
|
|
|
Console.WriteLine("The Entered String is :{0}",strVal); |
||
return(0); |
|
|
} |
|
|
} |
|
|

Запирание (Sealing) класса
В C# наследование от какого-либо класса может быть запрещено при помощи запирания (sealing) класса, предохраняющего его от
наследования…
sealed class classOne
{
//Class Implementation
}
…
Замещение (Overriding) метода
Чтобы произвести замещение существующего базового метода:
Объявить новый метод с тем же именем, что и в базовом классе
Добавив перед именем ключевое слово new

|
Замещение метода - |
|
|
|
пример |
|
|
class MethodOverride |
|
|
{ |
using System; |
|
public static void Main() |
class IntAddition |
|
{ |
{ |
|
StringAddition objStringAddition = new StringAddition( |
public void add() |
|
objStringAddition.add(); |
{ |
|
} |
int firstNum=1; |
|
} |
int secondNum=2; |
|
|
|
||
Console.WriteLine("The Sum of the two numbers is : {0}", firstNum+secondNum); |
||
} |
|
|
}
class StringAddition : IntAddition
{
new public void add()
{
string firstStr="a"; string secondStr="b";
Console.WriteLine("The Sum of the two strings is : {0}", firstStr+secondStr);
}
}
Резюме
Параметризованные конструкторы – это конструкторы которые передают параметры.
Мы передаем либо различное количество аргументов, либо задаем различные типы для параметров, передаваемых в конструктор для того чтобы различать конструкторы во время выполнения программы.
В C# деструкторы вызываются сборщиком “мусора” (Garbage Collector).
Методы в C# могут быть перегружены двумя способами.
Определением различного количества параметров метода
Определением различных типов параметров метода
C# позволяет перегружать операторы.
Перегрузка оператора предполагает альтернативное функционирование оператора, отличающееся от обычного стандартного действия (для примера оператор сложения +) при использовании его с определенными объектами классов или со структурами.
C# не поддерживает множественное наследование.
Для замещения существующего метода базового класса мы объявляем в производном классе новый метод с тем же именем, предваряя имя ключевым словом new.