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 Java Objects!
      
    
You have completed Java Objects!
Preview
    
      
  Let's create our first method, a getter.
Learn more
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
                      Okay so we've fixed our problem with
restricting changes to our character name,
                      0:00
                    
                    
                      but it's a little too restrictive.
                      0:05
                    
                    
                      It can't even be accessed from
outside the class itself.
                      0:07
                    
                    
                      We want to allow consumers of our objects
to still be able to see the value,
                      0:09
                    
                    
                      even if they can't change it.
                      0:13
                    
                    
                      So how do we let them get the value then,
you ask?
                      0:15
                    
                    
                      Great question.
                      0:18
                    
                    
                      Well the answer is we build
a method that exposes a value.
                      0:19
                    
                    
                      You've used methods before but for
instance on the console object use
                      0:23
                    
                    
                      the print F method or on strings
we use the two lower case method.
                      0:27
                    
                    
                      Now remember what I said that developers
modeling the real world objects focus on
                      0:31
                    
                    
                      two main characteristics
which are state and behavior.
                      0:35
                    
                    
                      Well fields usually are used
to express that state and
                      0:38
                    
                    
                      its methods help us to
express that behavior.
                      0:41
                    
                    
                      So, therefore you can kind of think of
fields as characteristics about your
                      0:44
                    
                    
                      object and methods as the verbs or
actions that your object can perform.
                      0:47
                    
                    
                      So, just like how you've use methods on
objects before, like string contains or
                      0:51
                    
                    
                      integer percent, it's time that
we learn how to write our own.
                      0:55
                    
                    
                      Okay, so let's do this.
                      0:59
                    
                    
                      Let's add a method to our
object that behaves like this.
                      1:00
                    
                    
                      When the method is used or
called it will respond with or
                      1:04
                    
                    
                      return to the calling code.
                      1:08
                    
                    
                      The value of the private
field character name.
                      1:10
                    
                    
                      Now defining a method is pretty similar
More to the way that we define a field.
                      1:14
                    
                    
                      They also have access modifiers.
                      1:18
                    
                    
                      So let's come here.
                      1:21
                    
                    
                      So when I come in here and
                      1:22
                    
                    
                      say we definitely we want
this to be public right.
                      1:23
                    
                    
                      We want this to be accessible,
that's the point of what we're doing.
                      1:25
                    
                    
                      So we'll start with public and now,
                      1:27
                    
                    
                      we need to define what type of data
will be returned from this method,
                      1:30
                    
                    
                      meaning when I call this method, what
type of answer will I get back from it.
                      1:35
                    
                    
                      For instance, let's look at one.
                      1:39
                    
                    
                      So if we look at the method
string.contains,
                      1:40
                    
                    
                      remember you use that to find
out if something's in there.
                      1:43
                    
                    
                      So that is definitely a public method,
right.
                      1:45
                    
                    
                      We are using that, and
it returns a Boolean okay.
                      1:48
                    
                    
                      So we said that our method was going
to be returning a string, right?
                      1:52
                    
                    
                      It's the character name.
                      1:57
                    
                    
                      It's a string so so we say, public string.
                      1:58
                    
                    
                      And next is the method name so
we're going to get the character names so
                      2:03
                    
                    
                      getCharacterName.
                      2:08
                    
                    
                      Now, here's the part that makes it
different than the field definition.
                      2:10
                    
                    
                      Look, it looks pretty similar, right?
                      2:13
                    
                    
                      What we're going to do is we're
going to open parentheses
                      2:15
                    
                    
                      stating that this is indeed a method and
it's expected to be called.
                      2:18
                    
                    
                      So, here is where you
would define parameters,
                      2:21
                    
                    
                      that's if your method needs it.
                      2:24
                    
                    
                      So, if we come back to the string contains
method, so it's a public Boolean that
                      2:25
                    
                    
                      contains is the name of the method and
again it opens up its parentheses.
                      2:30
                    
                    
                      And it needs to know, a parameter we pass
in the string containing words right?
                      2:35
                    
                    
                      Remember we did that.
                      2:41
                    
                    
                      So back at our example of contains it
needs you to specify what you're looking
                      2:42
                    
                    
                      for the contains method
takes a string argument.
                      2:46
                    
                    
                      So it's a string of the matching
text that you're looking for, right?
                      2:50
                    
                    
                      It specifies that parameter list.
                      2:56
                    
                    
                      We'll go over these in a bit but currently
our method doesn't need any parameters.
                      2:58
                    
                    
                      So we'll just go ahead and close it and
then we'll start our methods body.
                      3:01
                    
                    
                      So it's opening up a new scope and I'll
write right away to put the closing brace.
                      3:07
                    
                    
                      So you see all of the editor lines up
the braces, it's really nice this way.
                      3:14
                    
                    
                      So now if I come here, I know this is the
class scope and here is this method scope.
                      3:17
                    
                    
                      It's a nice way to make sure that
everything's lining up in one class.
                      3:22
                    
                    
                      Okay, back to our method.
                      3:26
                    
                    
                      In this scope here in this code
block we can write whatever we want.
                      3:28
                    
                    
                      In here we can write whatever code the
method should perform when it's called.
                      3:33
                    
                    
                      Finally, what should happen is,
                      3:38
                    
                    
                      it should return a value of its
expected type, which is string.
                      3:39
                    
                    
                      So it's going to use the keyword return.
                      3:44
                    
                    
                      And we're going to return
the characterName, right?
                      3:49
                    
                    
                      And the character name is
a string characterName.
                      3:53
                    
                    
                      So here's the characterName.
                      3:57
                    
                    
                      It's going to return this and because it's
in the scope right it's in this class
                      3:59
                    
                    
                      scope it has access to this
even though it's private.
                      4:03
                    
                    
                      The prefix of get here is part
of a very common pattern.
                      4:07
                    
                    
                      It's called a getter, this pattern
of getter for a specific field
                      4:12
                    
                    
                      is to name them with get followed by
the name of the field just like we did.
                      4:17
                    
                    
                      GetCharacterName so
you can see it's get and
                      4:22
                    
                    
                      then character a name and it's getting
this private field character name here.
                      4:27
                    
                    
                      So methods that are used to change
the state of these objects or
                      4:31
                    
                    
                      set a field value
are prefixed with set and
                      4:34
                    
                    
                      those are called of course setters so
together these getters and
                      4:37
                    
                    
                      setters are often referred to as
properties in other languages.
                      4:41
                    
                    
                      They'll become very common practice for
you in your job adventures.
                      4:46
                    
                    
                      Okay, so
now let's flip back to the example.
                      4:49
                    
                    
                      I'm gonna go ahead and before we do that,
I'm gonna get rid of this comment here.
                      4:52
                    
                    
                      I wanna save this file, and let's
flip back to example and take a look.
                      4:56
                    
                    
                      So we know that the code in here doesn't
compile remember it wasn't compiling,
                      5:01
                    
                    
                      so let's go ahead.
                      5:04
                    
                    
                      Let's get rid of this Darth Vader cuz
we're not gonna change that anymore,
                      5:05
                    
                    
                      it's private.
                      5:08
                    
                    
                      But now, instead of accessing the private
field character name, let's try to access
                      5:10
                    
                    
                      the public method, getCharacterName,
and we're going to call that method.
                      5:16
                    
                    
                      So there's some parens I'll put
this down in a new line in here.
                      5:20
                    
                    
                      This is highlighting, this is this, okay.
                      5:24
                    
                    
                      So we're going to call the method,
getCharacterName and
                      5:27
                    
                    
                      that's going to return the method.
                      5:30
                    
                    
                      So let's go ahead and
let's compile it and run it.
                      5:32
                    
                    
                      I forgot to save it important note
there see the little red dot.
                      5:37
                    
                    
                      So compile it and run it.
                      5:41
                    
                    
                      Boom we got it, it's back.
                      5:44
                    
                    
                      So again the method was called and
our code inside of that method.
                      5:46
                    
                    
                      This method body here was run and we
returned the private field characterName.
                      5:51
                    
                    
                      And that's definitely more like how
things work in real life, right?
                      5:58
                    
                    
                      People can't just go changing
the character on these pez dispensers and
                      6:02
                    
                    
                      now we are clearly communicating that
reality because we haven't added a setter
                      6:05
                    
                    
                      we've only add it together so
nobody can set that.
                      6:09
                    
                    
                      Now, one thing you're probably wondering
is well, we can't change it at all,
                      6:13
                    
                    
                      right, it's always going to be Yoda.
                      6:18
                    
                    
                      That's a good point.
                      6:21
                    
                    
                      Let's tackle that next awesome
job modeling the character.
                      6:22
                    
                    
                      Now it can't be changed only retrieved.
                      6:25
                    
                    
                      This is a very common pattern
used to express how you'd
                      6:28
                    
                    
                      like people to interact with your object.
                      6:31
                    
                    
                      We'll run through it a couple more
times in the course just to make sure
                      6:33
                    
                    
                      that it's sinking it.
                      6:35
                    
                    
                      So we left another problem in there,
didn't we?
                      6:37
                    
                    
                      Every single Pez dispenser that we
create is gonna be a Yoda character.
                      6:40
                    
                    
                      That's certainly gonna bum out some kids
who want a Teenage Mutant Ninja Turtle or
                      6:43
                    
                    
                      an Elsa version, and for
sure sales are gonna plummet.
                      6:46
                    
                    
                      Let's do a quick exercise to make sure
that we got this private keyword and
                      6:50
                    
                    
                      getter method thing figured out, and
                      6:53
                    
                    
                      then we'll fix this Yoda only
situation that we got ourselves into.
                      6:55
                    
              
        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