Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I call a base class's parameterized constructor from a derived class if the derived class has no parameterized constructor?

I have a base class with two constructors: a default constructor and a parameterized constructor. Another class inherits from that base class and it only has a default constructor. How can I call the base class's parameterized constructor from the derived class?

like image 716
Akki0007 Avatar asked Dec 22 '22 17:12

Akki0007


2 Answers

It's not entirely clear what your question is, but I suspect you either want to add an explicit parameterless constructor to your child class:

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

or add both a parameterized and parameterless one:

public Child() {
}

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

Note that constructors aren't inherited - so just because a base class has a particular constructor signature doesn't mean you can instantiate a class using that signature. The child class has to provide it itself.

Any compiler-provided parameterless constructor will always call the parameterless constructor of its base class.

like image 102
Jon Skeet Avatar answered Dec 24 '22 07:12

Jon Skeet


Something like this?

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

class Child : Parent
{
    public Child() : base("42") { }
}
like image 36
alun Avatar answered Dec 24 '22 05:12

alun