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
We can set the values of an object's fields to an initial value when it's created.
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
A map without both width and
height isn't very useful.
0:00
We can make sure that both of these fields
are filled out when the object is created
0:04
by providing a special kind of
method called a constructor method.
0:09
They're called constructors
because they're used to construct
0:13
new instances of a class.
0:17
Let me show you what that looks like here.
0:20
Constructor methods are named
the same as the class they're in.
0:22
The constructor is called
when the object is created.
0:29
If we add parameters to the constructor
method, then the user of this class
0:32
must provide those parameters in order for
the object to be constructed.
0:37
We want the user to specify
both the width and a height, so
0:41
we'll add parameters for width and height.
0:44
Now we need to use these parameters
to initialize the fields.
0:48
We do that in the body of the method.
0:52
The Width and
Height fields that were declared up here
1:02
are called instant variables because
they exist as long as the object exists.
1:05
The variables width and height here,
with all lowercase letters,
1:11
are called method level variables, because
they only exist inside this method.
1:15
That's the variable scope.
1:21
We can only use these variables
inside this method, but
1:24
these instance variables here can be used
by other methods, and even other classes.
1:28
Again naming conventions
determine how we name variables.
1:34
It's standard practice to
name method parameters and
1:38
method level variables starting
with the lower case letter.
1:41
Methods and public instance
variables have an uppercase letter.
1:44
Check the teacher's notes for
a list of naming conventions.
1:49
The primary purpose of a constructor
is to initialize the object's
1:53
fields with some initial values.
1:57
One question we should ask ourselves when
working with fields and constructors is,
1:59
should the values of the fields be able to
change after the object is constructed?
2:05
In our case it doesn't make sense for
2:10
the size of the map to change
after we've created it.
2:12
We can make sure that
the user of this class
2:16
doesn't accidentally change the values
by making these fields read only.
2:19
We do that by putting
the read only keyword here.
2:24
So now a map must have both a width and
a height.
2:35
And the width and the height
cannot change after it's created.
2:39
We've accomplished this by
adding a constructor and
2:43
using the read-only modifier.
2:47
You'll notice that constructors
don't have return types.
2:49
They're only used to
initialize the object.
2:53
And they don't return anything.
2:55
Usually if a method doesn't return
anything we would type void here
2:57
just to the left of the method name.
3:02
Remember the void keyword means that
the method doesn't return anything.
3:05
We don't do that on
constructor methods though,
3:09
because constructors
can't return anything.
3:12
We do need to do one more thing
before we can use our constructor.
3:16
We need to make it public, just like we
did with the width and height fields.
3:20
This allows other classes to construct
a map using this constructor.
3:25
Let's go back to the game class now,
3:31
to see how to use this
constructor to create an object.
3:33
Before we make any changes,
let's try to compile the code as it is.
3:37
So I'll open up the Console window.
3:42
And type mcs
3:46
-out:TreehouseDefense.exe*.cs.
3:50
We can see how the compiler enforces
the new rules that we've established for
4:01
the map class.
4:05
We're getting the first error
because we didn't pass in two
4:07
arguments to the constructor.
4:10
We can add those arguments
here between these parentheses
4:12
where we're creating a new map object.
4:15
Let's initialize our map with
a width of 8 and a height of 5.
4:17
This resolves the first error.
4:22
The other two errors are happening because
we tried to assign values to width and
4:24
height after the object was created.
4:29
This is no longer permissible because
we made both of these fields read only.
4:32
We initialize these fields
in the constructor instead.
4:37
So we can remove these two lines.
4:41
We can still read the values of width and
height though.
4:43
So this line, where we calculate the area,
is perfectly legal.
4:47
Let's compile again to make sure
we're following our new rules.
4:51
Excellent.
4:58
If we had broken any rules,
4:59
we'd see compiler errors here
instead of just this warning.
5:01
The map class is starting to
define what it means to be a map.
5:06
We'll add even more to this
class in the next video.
5:10
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