Java面向对象(1)

来源:互联网 发布:阿里云学生服务器饥荒 编辑:程序博客网 时间:2024/06/05 00:56

1、新建实例对象的成员变量的初始化

对象创建后,其成员变量可以按照默认的方式初始化:
1、数值类型(byte、short、int、long、float、double)都为0;
2、boolean型为false;
3、char型为\u0000;
4、引用类型为null。


2、引用类型

  除8种基本类型之外,用类、接口、数组等声明的变量称为引用类型变量,简称“引用”。
  引用类型变量中存储的是某个对象在内存中的地址信息,通常称为指向该类的对象。引用的功能在于访问对象。
  可以给引用类型变量赋值为null,表示不指向任何对象。当某个引用类型变量为null时无法对对象实施访问。此时,如果通过引用访问成员变量 或调用方法,会产生NullPointerException异常。

  相同类型的引用类型变量之间赋值,不会创建新的对象,只是使其指向同一个对象。


3、方法的重载

  方法的签名包含两个方面:方法名和参数列表。一个类中,不可以有两个方法的签名完全相同。
  在Java语言中,允许多个方法的名称相同,但参数列表不同,称之为方法的重载(overload)。
  编译器在编译时会根据签名来绑定调用不同的方法。


4、this关键字

  this关键字用在方法体中,用于指向调用该方法的当前对象。


5、构造方法(构造器)

在Java语言中可以通过构造方法实现对对象成员变量的初始化。构造方法是在类中定义的方法。但不同于其他的方法。
1、构造方法的名称必须与类名同名。
2、构造方法没有返回值,但也不能写void。
3、任何一个编译后的类都必须含有构造方法。如果源程序中没有定义,编译器在编译时将为其添加一个无参的空构造方法(称之为“默认的构造方法”)。
4、当自定义了构造方法后,Java编译器将不再添加默认的构造方法。

//构造方法的重载package oo.day02;//格子类public class Cell {    int row;   //行号    int col;   //列号    Cell(int row,int col){        this.row = row;        this.col = col;    }    Cell(int n){        this(n,n);  //调用构造方法    }    Cell(){        this(0,0);  //调用构造方法    }    void drop(){  //下落1格        row++;    }    void drop(int n){ //下落n格        row += n;    }    void moveLeft(){  //左移1格        col--;    }    void moveLeft(int n){  //左移n格        col -= n;    }    String getCellInfo(){  //获取格子坐标        return row+","+col;    }}

6、引用类型数组

  在Java中,数组属于引用数据类型。数组对象在堆中存储,数组变量属于引用类型,存储数组对象的地址信息,指向数组对象。
  数组的元素可以看成数组对象的成员变量(只不过类型全都相同)。数组的元素可以是任何类型,当然也包括引用类型。
  需要掌握以下四种形式的引用类型数组:
(1)

Cell[] cells = new Cell[4]; cells[0] = new Cell();cells[1] = new Cell(2);cells[2] = new Cell(5,4);cells[3] = new Cell(2,6);

(2)

Cell[] cells = {        new Cell(),        new Cell(1),        new Cell(5,4),        new Cell(2,7)    };

(3)

Cell[] cells = new Cell[]{        new Cell(),        new Cell(1),        new Cell(5,4),        new Cell(2,7)     };

(4)

int[][] arr = new int[3][];arr[0] = new int[2];arr[1] = new int[3];arr[2] = new int[2];arr[1][1] = 100;    
package oo.day02;//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(){  //下落        for(int i=0;i<cells.length;i++){            cells[i].row++;        }    }    void moveLeft(){  //左移        for(int i=0;i<cells.length;i++){            cells[i].col--;        }    }    void moveRight(){ //右移        for(int i=0;i<cells.length;i++){            cells[i].col++;        }    }    void print(){ //打印每个格子的坐标        for(int i=0;i<cells.length;i++){            String s = cells[i].getCellInfo();            System.out.println(s);        }    }}
原创粉丝点击