首页 > 编程笔记

Java构造方法的重载

在 Java 中,构造方法本质上也是一个类中的方法,因此构造方法也可以进行方法的重载。

例如,下面的实例程序中让需要进行重载的每一个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 传入进来的字符串为:嘿嘿

在上面的输出结果中可以看到,传递进入什么参数,就会调用相应的构造器进行打印:
在调用 cat3 对象的构造器时,参数的顺序不能写错,不能先写字符串变量,再写整数变量,这样是不被允许的,除非再编写一个形如 Cat(String y,int x) 的构造器,这样参数才会被匹配上。

在利用含参变量创建对象的过程中,一定要将后面的参数的顺序以及个数写正确,这样才可以做到程序不报错并调用我们想要调用的构造器。

推荐阅读