构造器的作用或者说有参构造和无参构造的区别
好的,说到构造器,我们先来看一什么是构造器:
最简单直白的话,当你要new一个对象的时候,必须要有构造器才能new出来,类里面默认有无参的构造器,看不到的,当我们要创建一个有参构造的时候,最好也把无参构造写出来。
作用:
java中构造方法指的是:
与类名相同,无返回类型的方法,参数可以为空,也可以带参数。
比如一个 Point 类,private Point(){}这个就是无参数的构造方法。
private Dao(int x0, int y0){}这个就是带参数的构造方法。
作用:用来初始化 java 类,提供类的初始化和实例化,以便调用。
如果想在实例化对象的时候就为这个属性赋值的话,可以通过有参构造实现。
很显然,构造器的最大用处就是在创建对象时,对对象的实例进行初始化,那么构造器又分为有参构造和无参构造,下面我们就通过代码来理解有参和无参构造。
package sessionWork2;
/**
*默认的无参构造方法
*/
public class Point {
int x;
int y;
public void movePoint(int dx,int dy){
//this.x += dx;
this.x = this.x+dx;
//this.y += dy;
this.y = this.y+dy;
}
public static void main(String[] args){
//为Point类new一个对象,因为类里面有无参构造器,看不到,所以才能new出来,
Point p2 = new Point();
p2.movePoint(2, 6);
System.out.println('p2X轴的坐标为:'+p2.x+'\n' + 'P2Y轴的坐标为 :' + p2.y);
}
}
输出结果如下,采用的是默认的无参构造,因为类里面有默认的无参构造器,所以我们可以new出来对象
下面我们来看下,如果我们创建一个有参构造的话,是否可以new出来无参的对象
package sessionWork2;
/**
*创建一个有参构造器,然后new一个无参对象
*/
public class Point {
int x;
int y;
//创建一个有参构造器
public Point(int x0, int y0){
this.x = x0;
this.y = y0;
}
public void movePoint(int dx,int dy){
//this.x += dx;
this.x = this.x+dx;
//this.y += dy;
this.y = this.y+dy;
}
public static void main(String[] args){
Point p2 = new Point();
p2.movePoint(2, 6);
System.out.println('p2X轴的坐标为:'+p2.x+'\n' + 'P2Y轴的坐标为 :' + p2.y);
}
}
可以看到我们只有有参构造的时候是无法new出来无参的对象的
此时我们再创建一个无参构造器,发现我们new的无参对象不报错了,
package sessionWork2;
public class Point {
int x;
int y;
//创建一个无参构造器
public Point(){
}
//创建一个有参构造器
public Point(int x0, int y0){
this.x = x0;
this.y = y0;
}
public void movePoint(int dx,int dy){
//this.x += dx;
this.x = this.x+dx;
//this.y += dy;
this.y = this.y+dy;
}
public static void main(String[] args){
Point p1 = new Point(2,2);
p1.movePoint(3,6);
System.out.println('p1x轴的坐标为:' + p1.x +'\n' + 'p1y轴的坐标为:'+p1.y);
Point p2 = new Point();
p2.movePoint(2, 6);
System.out.println('p2X轴的坐标为:'+p2.x+'\n' + 'P2Y轴的坐标为 :' + p2.y);
}
}
执行结果如下,看到这里你懂了什么是构造器了吗,什么事无参构造,有参构造,作用又是什么呢
赞 (0)