跟着姜少学Java基础编程之十二:面向对象-构造方法

来源:互联网 发布:js 数字比大小 编辑:程序博客网 时间:2024/05/21 12:50

本篇主要介绍Java语言中的面向对象中的构造方法。

12 构造方法

构造方法是在使用new关键字创建对象时调用的方法,负责对象属性值的初始化工作。

12.1 构造方法的特性

1、构造方法的方法名与类名相同(包括字母大小写)
2、构造方法没有返回值(void类型也不能写)
3、构造方法如果开发者不提供,则编译器会默认提供一个无参的构造方法。若开发者提供了构造方法,则编译器不再提供无参的构造方法。

12.2 无参构造方法

12.2.1 隐藏的无参构造方法

隐藏的无参构造方法,即开发者在类中不需要提供构造方法,编译器会自动给这个类提供一个无参的构造方法。

   public class Point{        public int x;        public int y;   }
   public static void main(String[] args) {      //创建Point对象,调用了系统提供的隐藏的无参构造方法      Point point = new Point();      point.x = 3;      point.y = 3;   }

12.2.2 显式定义的无参构造方法

开发者在类中显式定义无参的构造方法后,系统不再提供隐藏的无参的构造方法。

  public class Point{        public int x;        public int y;        //显式定义的无参构造方法Point()        public Point(){        }   }
   public static void main(String[] args) {      //创建Point对象,调用了开发者显式定义的无参构造方法      Point point = new Point();      point.x = 3;      point.y = 3;   }

注:隐藏的无参构造方法,只有在开发者未显式的的定义任何一个构造方法(不管有参还是无参)时,系统才会提供隐藏的无参构造方法。只要开发者定义了一个或者多个构造方法(不管有无参数),系统都不再提供隐藏的无参构造方法。

12.3 有参构造方法

有参的构造方法是为了创建对象时,使用指定的值将对象的属性值进行初始化而定义的构造方法。有参构造方法必须由开发者显式定义

   public class Point{        public int x;        public int y;        //有参构造方法        public Point(int x, int y){              this.x = x;//给对象的x属性赋值              this.y = y;//给对象的y属性赋值        }   }
   public static void main(String[] args) {       Point point = new Point(3,4);//使用有参构造方法创建对象       System.out.println("x坐标为"+point.x        +",y坐标为"+point.y);//输出x坐标为3,y坐标为4   }

上述代码中的有参构造方法,在给成员变量赋值时,使用了java中的关键字this,如this.x = x;此处如果写出x = x;则是将传入的参数x的值赋给了变量本身,而不是赋给成员变量x(因为此处形参与成员变量同名)。如果要把形参的值赋给同名的成员变量,需要使用this.成员变量名即可访问同名的成员变量。

12.4 构造方法的重载

一个类的构造方法有多个,这些构造方法的参数列表不同,就形成了构造方法的重载。

   public class Point{        public int x;        public int y;        //无参构造方法        public Point(){        }        //1个参数的有参构造方法        public Point(int x){        this(x,x);//调用Point(int x, int y)    }    //2个参数的有参构造方法    public Point(int x,int y){        this.x = x;        this.y = y;    }   }

上述代码的Point类中,定义了三个构造方法,这三个构造方法的参数列表是不同的,属于方法的重载。
其中,只有一个参数的构造方法,使用this(x,x)调用了有两个参数的构造方法,这是关键字this的另一种用法。
有了构造方法的重载,开发者就可以按需实例化Point的对象,比如:

    Point p1 = new Point();//点p1的坐标为(0,0)    Point p2 = new Point(3);//点p2的坐标为(3,3)    Point p3 = new Point(4,5);//点p3的坐标为(4,5)

下一篇将介绍Java中的面向对象中的方法的重载。

阅读全文
0 0
原创粉丝点击