Вопрос 5. Как вызвать конструктор базового класса?

Автор: admin | 14 Июнь 2008 – 14:58 -


Вопрос 5. Как вызвать конструктор базового класса?

Ситуация такая – есть базовый класс и есть производные классы. У базового класса есть некий конструктор с параметрами, код которого должен выполнятся в каждом производном класса (т. е. это некий общий код). Разумеется, писать этот код в каждоб производном классе не логично. Правильно это делать через ключевое слово base:

...
public class C1
{
    //Конструктор с параметром.
    public C1(int a)
    {
        Console.WriteLine(a);
    }
}
public class C2:C1
{
    //Конструктор с параметром.
    public C2(int a):base(a)
    {
        Console.WriteLine(a+1);
    }
}
//Тестовый класс.
public class Test
{
    public static void Main()
    {
        //Напечатается 100 и 101.
        C1 s=new C2(100);
    }
}

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

При этом у двух конструкторов количество параметром может и не совпадать. Выглядеть это будет приблизительно так:

    //Конструктор с параметром.
    public C2(int a, int b):base(a)
    {
        ...


Tags: , , , , , ,
Находится в FAQ по C# | No Comments »

Ответить

Вы должны быть в системе, дабы комментировать.


C# — язык программирования, сочетающий объектно-ориентированные и аспектно-ориентированные концепции. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств вроде Visual Studio. Функциональные и удобные рации Midland gxt-650 в магазинах Москвы. . Со склада в Москве запчасти зил foton по заводским ценам. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к С++ и Java. Язык имеет строгую статическую типизацию, поддерживает полиморфизм, перегрузку операторов, указатели на функции-члены классов, атрибуты, события, свойства, исключения, комментарии в формате XML. Переняв многое от своих предшественников — языков С++, Java, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++).