"Java Objects (Retired)" was retired on January 31, 2017. You are now viewing the recommended replacement.
Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Well done!
You have completed C# Objects!
You have completed C# Objects!
Preview
Let's use inheritance to make a subclass of the Point class.
This video doesn't have any notes.
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
Let's create a subclass of the point class
to do that we need to create a new class,
0:00
let's call it map location.
0:06
So we'll create a new file
called MapLocation.cs in here
0:08
we'll create a new class
called map location.
0:12
We specify that the map location class
is a subclass of the point class by
0:25
typing : Point after the name of
the class here, and there you go.
0:30
We've just subclassed the point class.
0:35
We need to do one more thing
to make this class usable.
0:38
When a map location object is created,
we're creating a point object too.
0:42
They aren't two distinct objects, it's
just that a map location is also a point.
0:47
In the same way that when a mammal
is born, a vertebrate and
0:52
an animal are also born because a mammal
is both a vertebrate and an animal.
0:56
Remember that the point object
requires that we pass in both x and
1:02
y coordinates to the constructor
in order for it to be created.
1:06
So we still have to
satisfy those requirements
1:10
because a map location is
just another type of point.
1:13
When a map location object is created
it first needs to call the point class
1:17
constructor and pass it what it needs.
1:21
So the map location class will also
need a constructor that takes the x and
1:24
y coordinates, so that it can pass
them to the point class constructor.
1:28
Again, we name the constructor
the same as the class name.
1:33
In this case,
1:39
it will take the same parameters as
the constructor of the point class.
1:40
Now that we have a map
location constructor,
1:48
we need to tell it to call the point class
constructor and pass these parameters.
1:50
We do that by typing : base here and
list the parameters.
1:55
We use the base keyword here because the
point class is MapLocation's base class.
1:59
You'll hear people refer to the base class
as the parent class or the super class and
2:05
you'll hear people refer to the sub class
as the child class or derived class.
2:10
We're calling the base classes constructor
here and passing it the values it needs.
2:17
So now, any map location objects we
create will also be point objects,
2:22
let's go to main to see what this means.
2:28
Instead of using the point class here,
2:30
let's change it to use
the map location class.
2:33
To avoid any confusion I'll
rename this variable to x.
2:44
Even though x is now a map location,
this line here will still work.
2:52
The map location class doesn't have
a distance to method directly but
2:58
it inherits it from the point class or
3:03
you could say that x is both a point and
a map location.
3:06
So it has all of the methods
of both classes.
3:10
We can even assign map
location to a point.
3:13
We can also assign it to a point
at the same time we create it.
3:19
We can even pass MapLocation objects
into methods that are expecting a point.
3:23
Remember the maps OnMapMethod,
that takes a point as a parameter?
3:29
Let's pass it a MapLocation instead.
3:33
Let's compile just to
make sure this works.
3:48
See, no compiler errors.
3:53
These all works because map
location is a subclass of point.
3:56
We can say that the point and map location
classes have an is a relationship,
4:01
in that map location is a point.
4:07
There's even a way in C# to see
if an object is a certain type.
4:10
The is operator returns true if
a variable is of a given type
4:14
this is called a type check.
4:20
Let's print out the result
of a few type checks.
4:22
Let's first check to see
if x is a map location.
4:26
Let's also check to see if x is a point.
4:35
Finally let's create a new point object
and see if it's of type map location.
4:44
What do you think the result
of this expression will be?
4:53
Let's run it and see.
5:03
As you can see,
x is both the map location and a point but
5:12
point is not a map location.
5:17
That would be like saying that
an animal is a vertebrate,
5:20
when the only thing we know
is that it's an animal.
5:24
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up