C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Note: The derived class must use a base constructor initializer, with the base keyword, in its constructor declaration.
Info: Class A and class B have constructors. Class A is the parent or base class for class B, which is referred to as the derived class.
Syntax: The "B: A" syntax indicates that class B derives from class A. We use a colon character to indicate inheritance.
InheritanceExplanation: In the example, the constructor in class B calls into the constructor of class A using base initializer syntax.
C# program that uses base constructor initializer
using System;
public class A // This is the base class.
{
public A(int value)
{
// Executes some code in the constructor.
Console.WriteLine("Base constructor A()");
}
}
public class B : A // This class derives from the previous class.
{
public B(int value)
: base(value)
{
// The base constructor is called first.
// ... Then this code is executed.
Console.WriteLine("Derived constructor B()");
}
}
class Program
{
static void Main()
{
// Create a new instance of class A, which is the base class.
// ... Then create an instance of B.
// ... B executes the base constructor.
A a = new A(0);
B b = new B(1);
}
}
Output
Base constructor A()
Base constructor A()
Derived constructor B()
Derived: When we have a derived class, we can use a "base" expression to directly access the base class.
Output: The program accesses first the base _value, which equals 6. And then it gets the this _value, which is 7.
Disambiguate: This is a fancy word that means "to make clear" which entity you are referring to.
C# program that uses base and this keywords
using System;
class Net
{
public int _value = 6;
}
class Perl : Net
{
public new int _value = 7;
public void Write()
{
// Show difference between base and this.
Console.WriteLine(base._value);
Console.WriteLine(this._value);
}
}
class Program
{
static void Main()
{
Perl perl = new Perl();
perl.Write();
}
}
Output
6
7
Constructors: The "base" and "this" keywords are also used in constructor initializers. These make constructors easier to write.
Thus: Base and this are needed for navigating the class hierarchy. With them, we access members from a targeted class.
Tip: This does the same thing conceptually as base but for the same class, not the parent class.