Java构造方法的重载
在 Java 中,构造方法本质上也是一个类中的方法,因此构造方法也可以进行方法的重载。
例如,下面的实例程序中让需要进行重载的每一个Cat构造器包含不同的参数类型:
在调用 cat3 对象的构造器时,参数的顺序不能写错,不能先写字符串变量,再写整数变量,这样是不被允许的,除非再编写一个形如 Cat(String y,int x) 的构造器,这样参数才会被匹配上。
在利用含参变量创建对象的过程中,一定要将后面的参数的顺序以及个数写正确,这样才可以做到程序不报错并调用我们想要调用的构造器。
例如,下面的实例程序中让需要进行重载的每一个Cat构造器包含不同的参数类型:
public class Cat { public String name; //定义成员变量name public String color; //定义成员变量color public int age; //定义成员变量age public Cat() //增添下面这一段代码,这就是我们的构造器 { System.out.println("这个是构造器中的代码"); } //增加为含有参数的构造器 public Cat(int x) { System.out.println("构造器中传入进来的数字为:"+x); } public Cat(int x,String y) { System.out.println("构造器中传入进来的数字为:"+x+" 传入进来的字符串为:"+y); } public void eat() //定义猫类都能够执行的方法 { System.out.println("小猫"+name+"正在吃东西"); } public void saycolor() { System.out.println("小猫"+name+"的颜色是"+color); } public void sayage() { System.out.println("小猫"+name+"的年龄是"+age); } }我们想要调用重载的带有参数的构造器,创建对象时的语法如下:
类的名称 对象名=new 类的名称(与所选构造器所匹配的参数);这个语法和普通方法重载中的参数匹配的思想类似,只是构造器被调用时不是直接执行构造器,而是用于对象实例化过程的初始化。因此,可以将主方法中的代码改写如下,这样可以利用我们所创建的全部三个含参变量的构造器:
public class Main { public static void main(String[] args) { System.out.println("这是我们主类中的主方法,程序先从这里开始执行"); Cat cat1 = new Cat();//这里创建一个Cat类中的对象cat1 Cat cat2=new Cat(3); Cat cat3=new Cat(3,"嘿嘿"); } }输出结果如下:
这是我们主类中的主方法,程序先从这里开始执行
这个是构造器中的代码
构造器中传入进来的数字为:3
构造器中传入进来的数字为:3 传入进来的字符串为:嘿嘿
- 对 cat1 对象而言,我们在里面没有放进任何参数,因此会调用不含参数的 Cat 构造器;
- 对 cat2 对象而言,里面的参数是一个整数,因此我们会调用含有一个整数类型变量的 Cat 构造器,也就是 Cat(int x);
- 对 cat3 而言,里面的第一个参数是整数,第二个参数是一个 String 类的字符串对象,因此会调用 Cat(int x,String y) 构造器。
在调用 cat3 对象的构造器时,参数的顺序不能写错,不能先写字符串变量,再写整数变量,这样是不被允许的,除非再编写一个形如 Cat(String y,int x) 的构造器,这样参数才会被匹配上。
在利用含参变量创建对象的过程中,一定要将后面的参数的顺序以及个数写正确,这样才可以做到程序不报错并调用我们想要调用的构造器。