Как я могу вызвать параметризованный конструктор базового класса из производного класса, если у производного класса нет параметризованного конструктора? - PullRequest
3 голосов
/ 28 февраля 2011

У меня есть базовый класс с двумя конструкторами: конструктором по умолчанию и параметризованным конструктором. Другой класс наследует от этого базового класса, и у него есть только конструктор по умолчанию. Как я могу вызвать параметризованный конструктор базового класса из производного класса?

Ответы [ 3 ]

8 голосов
/ 28 февраля 2011

Не совсем понятно, что у вас за вопрос, но я подозреваю , что вы хотите добавить явный конструктор без параметров в ваш дочерний класс:

// Parameterless child constructor calling parameterized base constructor
public Child() : base("foo", "bar") {
}

или добавить как параметризованный, так и беспараметрический:

public Child() {
}

public Child(string foo, string bar) : base(foo, bar) {
}

Обратите внимание, что конструкторы не унаследованы - поэтому только то, что базовый класс имеет конкретную сигнатуру конструктора, не означает, что вы можете создать экземпляр класса с использованием этой сигнатуры. Дочерний класс должен предоставить его сам.

Любой предоставленный компилятором конструктор без параметров всегда будет вызывать конструктор без параметров своего базового класса.

2 голосов
/ 28 февраля 2011

Как то так?

class Parent
{
    public Parent(){}
    public Parent(string s) {}
}

class Child : Parent
{
    public Child() : base("42") { }
}
1 голос
/ 28 февраля 2011

Вот, пожалуйста:

// Parent class
class Parent
{
    public Parent()
        {
        // Paremeterless constructor
        }

        public Parent(string a, int b)
        {
        // Paremterised constructor
        }       
}


// Child class       
class Child : Parent
{
    public Child()
                :base("hi", 10)
        {
        // Parameterized constructor of the base class is invoked   
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...