构造器的作用或者说有参构造和无参构造的区别

好的,说到构造器,我们先来看一什么是构造器:

最简单直白的话,当你要new一个对象的时候,必须要有构造器才能new出来,类里面默认有无参的构造器,看不到的,当我们要创建一个有参构造的时候,最好也把无参构造写出来。

作用:

  1. java中构造方法指的是:
  2. 与类名相同,无返回类型的方法,参数可以为空,也可以带参数。
  3. 比如一个 Point 类,private Point(){}这个就是无参数的构造方法。
  4. private Dao(int x0, int y0){}这个就是带参数的构造方法。
  5. 作用:用来初始化 java 类,提供类的初始化和实例化,以便调用。
  6. 如果想在实例化对象的时候就为这个属性赋值的话,可以通过有参构造实现。

很显然,构造器的最大用处就是在创建对象时,对对象的实例进行初始化,那么构造器又分为有参构造和无参构造,下面我们就通过代码来理解有参和无参构造。

  1. package sessionWork2;
  2. /**
  3. *默认的无参构造方法
  4. */
  5. public class Point {
  6. int x;
  7. int y;
  8. public void movePoint(int dx,int dy){
  9. //this.x += dx;
  10. this.x = this.x+dx;
  11. //this.y += dy;
  12. this.y = this.y+dy;
  13. }
  14. public static void main(String[] args){
  15. //为Point类new一个对象,因为类里面有无参构造器,看不到,所以才能new出来,
  16. Point p2 = new Point();
  17. p2.movePoint(2, 6);
  18. System.out.println('p2X轴的坐标为:'+p2.x+'\n' + 'P2Y轴的坐标为 :' + p2.y);
  19. }
  20. }

输出结果如下,采用的是默认的无参构造,因为类里面有默认的无参构造器,所以我们可以new出来对象

下面我们来看下,如果我们创建一个有参构造的话,是否可以new出来无参的对象

  1. package sessionWork2;
  2. /**
  3. *创建一个有参构造器,然后new一个无参对象
  4. */
  5. public class Point {
  6. int x;
  7. int y;
  8. //创建一个有参构造器
  9. public Point(int x0, int y0){
  10. this.x = x0;
  11. this.y = y0;
  12. }
  13. public void movePoint(int dx,int dy){
  14. //this.x += dx;
  15. this.x = this.x+dx;
  16. //this.y += dy;
  17. this.y = this.y+dy;
  18. }
  19. public static void main(String[] args){
  20. Point p2 = new Point();
  21. p2.movePoint(2, 6);
  22. System.out.println('p2X轴的坐标为:'+p2.x+'\n' + 'P2Y轴的坐标为 :' + p2.y);
  23. }
  24. }

可以看到我们只有有参构造的时候是无法new出来无参的对象的

此时我们再创建一个无参构造器,发现我们new的无参对象不报错了,

  1. package sessionWork2;
  2. public class Point {
  3. int x;
  4. int y;
  5. //创建一个无参构造器
  6. public Point(){
  7. }
  8. //创建一个有参构造器
  9. public Point(int x0, int y0){
  10. this.x = x0;
  11. this.y = y0;
  12. }
  13. public void movePoint(int dx,int dy){
  14. //this.x += dx;
  15. this.x = this.x+dx;
  16. //this.y += dy;
  17. this.y = this.y+dy;
  18. }
  19. public static void main(String[] args){
  20. Point p1 = new Point(2,2);
  21. p1.movePoint(3,6);
  22. System.out.println('p1x轴的坐标为:' + p1.x +'\n' + 'p1y轴的坐标为:'+p1.y);
  23. Point p2 = new Point();
  24. p2.movePoint(2, 6);
  25. System.out.println('p2X轴的坐标为:'+p2.x+'\n' + 'P2Y轴的坐标为 :' + p2.y);
  26. }
  27. }

执行结果如下,看到这里你懂了什么是构造器了吗,什么事无参构造,有参构造,作用又是什么呢

(0)

相关推荐