nameField = new TextField(40); // initial width t= new Turtle(0,100); // x, y posWe do this by defining a method within the class, of the same name as the class. It initialises instance variables.
class Turtle... {
private int x = 200, y = 200;
//etc...
public Turtle(int initX, int initY) {
x = initX;
y = initY; // copy parameters to instance vars
}
public void goForward(...){
...
}
// etc...
}
Example of use, from outside the Turtle class:
private Turtle a,b,c; ... a = new Turtle(3,3); b = new Turtle(100, 200); c = new Turtle(); //NO - we MUST use the constructor !!Note:
They must have differing parameter types, to enable them to be distinguished.
Benefit: no need for artificially-different names for similar tasks.
Example: we are happy with the default x, y - but want to specify the state of the pen on creation of a turtle:
class Turtle ...{
private int x=100, y=100;
// two constructors:
public Turtle(int initX, int initY){
// as before
}
public Turtle(boolean penState){
penUp = penState;
}
...etc
}
if we put:
t = new Turtle(true);then Java uses the constructor which has one boolean parameter.
We might want to withdraw a standard amount, or a specified amount - so we micht have:
class BankAccount {
private int balance=0;
//...constructors here...
//now the methods:
public void withdraw(){
balance=balance-50;
}
public void withdraw(int amount){
balance=balance-amount;
}
...
}
We DON'T need to invent two different names, such as
withdrawFixed, withdrawAny.