方法补充
- 方法的签名—方法名和参数列表
- 方法的重载(overload)
-1)同一个类中,方法名相同,参数列表不同
-2)编译器在编译时,会根据签名自动绑定调用相应的方法 - 构造方法
1)常常用于给成员变量赋初值
2)方法名必须与类名相同,无返回值
3)构造方法是在创建对象时自动调用
4)构造方法可以重载
5)若自己不写构造方法,则编译器默认提供一个无参的构造方法
若写了构造方法,则编译器不会默认提供 - this关键字
1)指代当前对象,谁调用就指谁
this只能写在方法体中
2)this的用法:
*this.成员变量—访问成员变量
*this.方法名—–调用方法(很少用)
*this()———-调用构造方法
引用类型数组
- 以俄罗斯方块格子类为例
//Cell类
class Cell{
int row;
int col;
Cell(){ //无参构造方法
this(0,0); //this关键字调用有参构造方法
}
Cell(int row,int col){ //有参构造方法
this.row=row;
this.col=col;
}
}
2.
//引用类型数组
Cell[] cells=new Cell[4]; //声明一个格子数组,长度为4
cells[0]=new Cell(2,1);
cells[1]=new Cell(3,1);
cells[2]=new Cell(2,2);
cells[3]=new Cell(3,2); //给格子数组中的每个元素赋值
3.
Cell[] cells=new Cell[]{new Cell(2,1),new Cell(3,1),
new Cell(2,2),new Cell(3,2),} //声明一个长度为4的格子数组并赋值
4.
int[][] arr=new int[3][];//以数组为元素的数组
arr[0]=new int[2];
arr[1]=new int[3];
arr[2]=new int[2];
arr[1][0]=100; //第二个元素的第一个元素赋值为100
5.
int[][] arr=new int[3][4]; //3行4列
for(int i=0;i<arr.length;i++){ //行
for(int j=0;j<arr[i].length;j++){ //列
arr[i][j]=100; //给每一个元素循环赋值为100
}
}
案例
1.创建一个Cell类
//创建一个格子类
public class Cell {
int row;
int col;
Cell(){ //无参构造方法
this(0,0); //this关键字调用有参构造方法
}
Cell(int row,int col){ //有参构造方法
this.row=row;
this.col=col;
}
void drop(){ //下落一行
row++;
}
void moveLeft(){ //左移一列
col--;
}
void moveRight(){ //右移一列
col++;
}
String coord(){ //打印坐标
return row+","+col;
}
}
2.创建一个T类(4个格子组成)
//定义俄罗斯方块中的T类
public class T {
Cell[] cells; //声明一个格子数组
T(){
this(0,0); //调用有参构造方法
}
T(int row,int col){ //有参构造方法,给格子数组元素赋初值
cells=new Cell[4];
cells[0]=new Cell(row,col);
cells[1]=new Cell(row,col+1);
cells[2]=new Cell(row,col+2);
cells[3]=new Cell(row+1,col+1);
}
void drop(){ //T格子下落一行
for(int i=0;i<cells.length;i++){
cells[i].row++;
}
}
void moveLeft(){ //T格子左移一列
for(int i=0;i<cells.length;i++){
cells[i].col--;
}
}
void moveRight(){ //T格子右移一列
for(int i=0;i<cells.length;i++){
cells[i].col++;
}
}
void print(){ //打印T格子坐标
for(int i=0;i<cells.length;i++){
String str=cells[i].coord();
System.out.println(str);
}
}
}
3.创建一个T类测试类
//创建一个T类测试类
public class TTest {
public static void main(String[] args) {
T t=new T(2,5); //创建一个T类对象并调用有参构造方法
System.out.println("T格子初始坐标:");
t.print();
System.out.println("下落一行后");
t.drop();
t.print();
System.out.println("左移一列后");
t.moveLeft();
t.print();
}
}