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) 的构造器,这样参数才会被匹配上。
在利用含参变量创建对象的过程中,一定要将后面的参数的顺序以及个数写正确,这样才可以做到程序不报错并调用我们想要调用的构造器。
ICP备案:
公安联网备案: