在工具的合理性中,我们已经给row,col定了有效取值范围,但是当我们写出如下程序:
public class First { public static void main(String[] args) { SimplePoint pointOne = new SimplePoint(); pointOne.printPoint(); } }新生成的Point里row和col值都是0,明显不符合有效取值,细看会发现我们只是实例化了一个pointOne对象,并没有赋值。 在这段程序中SimplePoint()看格式应该是方法,实际这个就是构造方法。 但是在JAVA里,一个类如果没有书写构造方法,则JAVA的JVM在对该类实例化时,将自动执行一个由JVM提供的默认的构造过程;并且在这个过程中,会对类成员按如下规则赋初值: 0(byte类型、char、short、int、long) 0.0(float、double) false(boolean) 其他所有类类型对象,都将赋值为null。
构造方法的基本规则: 1.构造方法必须与类同名; 2.构造方法不能声明其返回值; 3.构造方法只能被JVM自动调用,用户不能调用构造方法; 4.构造方法只能在类实例化对象时(被new时)被调用; 5.构造方法的主要目的,就是初始化对象诸成员的值。
当我们在类中书写一个构造方法:
public SimplePoint() { setRow(0); setCol(0); }新增构造方法之后,我们new出的实例就符合有效取值范围了。
关于new:
SimplePoint pointOne = new SimplePoint();这句语句完成三组操作:(类比calloc函数) 1.申请SimplePoint类的一个实例空间; 2.完成对该实例空间中诸成员赋初值(调用构造方法); 3.将实例空间的首地址赋值给对象pointOne。
对指针的描述: SimplePoint pointOne = new SimplePoint(); 这句语句我们解释到第三步中,将实例空间首地址赋值给对象pointOne,可以说: 对象的本质就是指针变量。