Java面向对象02-方法的签名,重载,构造方法和引用类型数组

方法补充

  1. 方法的签名—方法名和参数列表
  2. 方法的重载(overload)
    -1)同一个类中,方法名相同,参数列表不同
    -2)编译器在编译时,会根据签名自动绑定调用相应的方法
  3. 构造方法
    1)常常用于给成员变量赋初值
    2)方法名必须与类名相同,无返回值
    3)构造方法是在创建对象时自动调用
    4)构造方法可以重载
    5)若自己不写构造方法,则编译器默认提供一个无参的构造方法
    若写了构造方法,则编译器不会默认提供
  4. this关键字
    1)指代当前对象,谁调用就指谁
    this只能写在方法体中
    2)this的用法:
    *this.成员变量—访问成员变量
    *this.方法名—–调用方法(很少用)
    *this()———-调用构造方法

引用类型数组

  1. 以俄罗斯方块格子类为例
//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();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值