Another important concept in Object Oriented programming is Inheritance.
It’s easier to show you what inheritance is through programming examples, rather
than explain in words. But essentially inheritance is creating one class from
another. The parent class is the main one, and your create a child class that
does similar but slightly different things.
Let’s see if we can’t make things clearer with a programming example.
Take a look at the new version of our Happy Birthday class. It’s
been stripped down (we’ve missed out the using statements and namespace
from the top)::
We’ve deleted the properties, and now have just two public Methods. The default
constructor is still there, though. It just sets some default text for the two
variables.
Inheritance is creating a child class from this parent. The parent is known
as the base class. The child class is known as a derived class.
The derived class can use all of the methods from its base class. But it will
have it’s own code. Here’s a class derived from the above Happy Birthday class:
What we want to do is to create another class called BirthdayParty.
Because the two are related, we can use Inheritance. This means that we don’t
have to start all over again. We can just reuse the HappyBirthday class.
For example, suppose we wanted to display the following message:
Happy Birthday Shahid!
You have 8 Presents
Enjoy your Party!
We can get the first two message from the base class (HappyBirthday).
But we can get the final message from the new class, BirthdayParty. Birthdays
and parties are closely related. But we want to keep one separate from the other.
We could then add more information about the party: number of guests, location,
time, etc. But we’d add this to the derived class, instead of the base class.
You can add this new derived class to the one you already have. You add it
outside of the HappyBirthday class but before the final curly bracket of your
namespace. You can also click Project > Add Class again to give you
a separate class file in the Solution Explorer. Then you type out the code for
your class in the usual way.
If you are adding a new class then you need the namespace at the top, but you
don’t necessarily need any using statements. So you do this:
namespace classes
{
class BirthdayParty : HappyBirthday
{
//CLASS CODE HERE
}
}
But you don’t don’t have to do this:
using System;
using System.Collections.Generic;
using System.Text;
namespace classes
{
class BirthdayParty : HappyBirthday
{
//CLASS CODE HERE
}
}
Note the first line from the derived class:
class BirthdayParty : HappyBirthday
You start by typing the word class, followed by a space. You then need
to come up with a name from your new class. We called ours BirthdayParty. Because
we want to use some of the code from the base class, we have this:
: HappyBirthday
So to specify that this is a derived class, you type a colon ( : ). After the
colon, you type the name of the base class.
The only other thing that’s different is this:
public BirthdayParty() :base()
{
}
We’re setting up a default constructor called BirthdayParty, the same name
as the new class. This is where you can set up variables for this particular
class. But this constructor knows nothing about the code from its parent class,
HappyBirthday. To tell it to run the code for the parent constructor as well,
we have this:
:base( )
When the programme runs, C# will initialise variables for the new derived class
as well as the variables in the base class.
Here’s some code that uses both classes. This is from a button on a form:
We’ve created a new BirthdayParty object and called it partyOn.
Then comes three message boxes. The first two call the Methods from the HappyBirthday
class. The final one calls the Method from the derived class, which is BirthdayParty.
Study the code and see how it works. Create a new project and try it out.
Inheritance can get very tricky, and it’s difficult to know what to put in
to the base class and what to put in the derived class. But it’s usual to create
a base class that holds general information, and a derived class that contains
more information. For example, you might have an automobile class as the base
class. A car class and a motorbike class could then be derived from automobile.
In the next lesson, we’ll take a look at Method Overloading.
|
Kaynak : https://www.homeandlearn.co.uk/csharp/csharp_s10p8.html ‘sitesinden alıntı