...
Section |
---|
|
Column |
---|
| Code Block |
---|
1 | linenumbers |
---|
title | Cat.java |
---|
|
public class Cat{
private int age;
private String name;
private Cat friend;
public Cat(String name, int age){
this.name = name;
this.age = age;
this.friend = null;
}
public Cat(String name, int age, Cat friend){
this.name = name;
this.age = age;
this.friend = friend;
}
public String getName(){
return name;
}
public String getFriend(){
if(friend == null){
return "I am have no friends :(";
}
else{
return "My friend is " + friend.getName();
}
}
public String sayHello(String aboutMe){
return "Hello World! My name is " + name
+ " and I am " + age + " years old."
+ " I am " + aboutMe+".";
}
}
|
|
Column |
---|
| Code Block |
---|
|
public class CatsTheMusical{
public static void main(String[] args){
Cat mist = new Cat("Mr. Mistoffelees",8);
System.out.println(mist.sayHello("magical"));
}
}
|
|
|
Lets make sure we understand how this works. First, lets talk about the contents of the file files Cat.java
.
- Fields: The class
Cat
has two three fields, name
, age
and age
friend
. Each field has a type, which ensures that we can only store a String
in name
and , an int
in age
and another Cat
in friend
. The word private
before each field indicates that the field can only be accessed from within the class Cat
. - Within the class the field (e.g.
name
) can be accessed simply by calling name
or {this.name}}. In Java, by convention most fields are private, and if you want to be able to access them from outside the class, you add getter and setter methods (we will get to these shortly).
- Constructors: The class
Cat
has a single constructor two constructors {{public Cat(String name, int age){...} }}, {{public Cat(String name, int age, Cat friend){...} }}. Constructors are used to create instances of the class. Notice that: - Because the constructor is public, it can be invoked from other classes. An example of the invoking the constructor can be seen in
CatsTheMusical.java
. - We use the keyword
this
to set the variables name
and age
. The arguments of the constructor create variables with the same name as the the fields of the class, shadowing the fields. By using the keyword this
, we can access methods and fields associated with the current instance of the class (being built in the constructor). This pattern, while a little confusing, is conventional.
- Methods: The class
Cat
has two methods, getName(){...
} and sayHello(...){..
}. The first is an example of a getter method. Note that while there is a getter method, there is no setter method, so once a Cat is created, the name cannot be changed.
Now that we have the basic terminology down, lets examine some of the finer points:
Here, we included a method getName()
in class Cat
.