Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник_ПОА.doc
Скачиваний:
93
Добавлен:
13.02.2015
Размер:
2.65 Mб
Скачать

Наследование

Класс может наследовать от другого класса. Это означает, что он наследуемый класс включает все члены — открытые и закрытые — исходного класса. Кроме того наследуемый класс может определять дополнительные члены. Исходный класс называется базовым классом (или классом-предком) а новый класс — производным классом (или классом-наследником) Производный класс создается для специализации возможностей базового класса. Например, можно определить класс Cat, который наследует от Animal. Cat может выполнять все то же, что и Animal, но дополнительно еще урчать. Код C# класса Cat, наследующего от класса Animal, выглядит следующим образом.

public class Cat : Animal

{

public void Purr()

{

}

}

Нотация Cat : Animal означает, что Cat наследует от Animal и что Cat также имеет метод MoveLeft и три закрытых поля: size, speed и strength. Если определяется класс SiameseCat, который наследует от Cat, он будет содержать все члены Cat, а также все члены Animal.

Полиморфизм

В сфере компьютерного программирования полиморфизмом называют возможность производного класса изменять или переопределять методы, которые он наследует от базового класса. Эта возможность используется, если нужно выполнить какие-то особые действия в методе, который отличается от базового, либо не определен в базовом классе,. Например, поскольку метод Animal.MoveLeft должен быть общим, чтобы подходить для всех животных, он является, возможно, очень простым, как например "изменение положения так, чтобы голова животного была в направлении X". Однако для класса Cat этого может быть недостаточно. Может потребоваться указать, как Cat двигает лапами и хвостом при поворотах. Или, к примеру, если описывается класс Fish или класс Bird, то, возможно, потребуется описать в каждом из этих классов свой метод MoveLeft. Поскольку можно настроить поведение метода MoveLeft для конкретного класса, в коде, создающем объект класса Animal и его наследников, отсутствует вызов отдельного метода для каждого животного. Пока объект наследует от Animal, достаточно, чтобы код вызывал метод MoveLeft. При этом будет вызвана та версия метода MoveLeft, которая соответствует конкретному типу животного-объекта в момент обращения к методу.

Constructors

Every class has a constructor: a method that shares the same name as the class. The constructor is called when an object is created based on the class definition. Constructors typically set the initial values of variables defined in the class. This is not necessary if the initial values are to be zero for numeric data types, false for Boolean data types, or null for reference types, as these data types are initialized automatically.

You can define constructors with any number of parameters. Constructors that do not have parameters are called default constructors. The following example defines a class with a default constructor and a constructor that takes a string, and then uses each:

class SampleClass

{

string greeting;

public SampleClass()

{

greeting = "Hello, World";

}

public SampleClass(string message)

{

greeting = message;

}

public void SayHello()

{

System.Console.WriteLine(greeting);

}

}

class Program

{

static void Main(string[] args)

{

// Use default constructor.

SampleClass sampleClass1 = new SampleClass();

sampleClass1.SayHello();

// Use constructor that takes a string parameter.

SampleClass sampleClass2 = new SampleClass("Hello, Mars");

sampleClass2.SayHello();

}

}