This is the eighth lesson in a series introducing 10-year-olds to programming through Minecraft. Learn more here.
One of the most important topics Java we need to understand in for modding Minecraft is classes and how to use them.
A class is a definition (or blueprint) for an object. It is a grouping of variables (called fields) and methods.
public class Block
{
private String unlocalizedName;
public final int blockID;
/* Number of hits it takes to break a block. */
public float blockHardness;
public Block(int id, Material par2Material)
{
....
}
protected void initializeBlock()
{
...
}
public void setStepSound(StepSound sound)
{
...
}
}
This class has:
3 fields:
unlocalizedName
,blockID
, andblockHardness
. Fields are simply variables within a class.3 methods:
Block
(which is a special method called a constructor since it has the same name as theclass
),initializeBlock
, andsetStepSound
. A method is a group of statements that perform a specific task. The variables listed within parentheses after a method name are called parameters.
Creating Objects
To create an object (an instance of a class), we use the new
keyword.
Block myBlock = new Block(...);
We can then access methods and fields that are part of the class definition.
myBlock.setStepSound(new StepSoundSand(...));
myBlock.blockHardness = 4.0f;
Note that we can only access methods and fields that are marked public
. We will talk more about visibility later.
Inheritance
Let's say we have a Block
class that can already perform a bunch of tasks. We might want to create a special type of snow block that melts if a player stands on it for too long.
Since we don't want to copy all the code we have in Block
into our new BlockSnow
class, we can have BlockSnow
extend Block
. (We could also say that BlockSnow
is derived from Block
or that BlockSnow
inherits from Block
).
What this means is that we automatically get all of the functionality of Block
in BlockSnow
and we can add some new functionality as well.
public class BlockSnow extends Block
{
public void melt() { ... }
}
BlockSnow blockOfSnow = new BlockSnow();
blockOfSnow.setStepSound(...);
blockOfSnow.melt(...);
Note that although we didn't include setStepSound
in our BlockSnow
class, we can still call that method because it exists in the parent class (Block
).
Comments