请解释 Java 中的概念,什么是构造函数?什么是构造函数重载?什么是复制构造函数?
题目解析
1、在类别基础的面向对象程序设计中,构造函数是一个类里用于创建对象的特殊子程序。它能初始化一个新建的对象,并时常会接受参数用以设定实例变量。
2、函数重载是 Java 具有的一项特性,该特性允许创建多个具有不同实现的同名函数。对重载函数的调用会运行其适用于调用上下文的具体实现,即允许一个函数调用根据上下文执行不同的任务。Java 中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。
3、复制构造函数是 C++ 编程语言中的一种特别的构造函数,习惯上用来创建一个全新的对象,这个全新的对象相当于已存在对象的副本。Java 不支持像 C++ 那样的复制构造函数,Java 复制构造函数是使用相同 Java 类的另一个对象创建对象的构造函数。与C++的不同点是如果不自己写构造函数的情况下, Java 不会创建默认的复制构造函数。
知识拓展
1、Java 构造函数分为无参构造函数和有参构造函数。顾名思义,无参构造函数时不带参数的构造函数,有参构造函数是带有参数的构造函数。
2、什么时候用复制构造函数呢?当您有一个具有许多属性的复杂对象时,使用复制构造函数要简单得多。如果在类中添加了一个属性,则只需更改复制构造函数并将此新属性考虑在内,而不用更改其他构造函数。下面通过一个编程实例来加深对构造函数的理解。
代码示例
1、构造函数
public class Student {
private String name;
private int age;
//构造无参方法
public Student(){
System.out.println("无参构造方法");
}
//构造有参方法
public Student(String name){
this.name=name;
}
}
2、构造函数的重载
//构造方法重载
public Student(String name,int age){
this.name=name;
this.age=age;
}
public void show(){
System.out.println(name+","+age);
}
3、复制构造函数
public class Student {
private String name;
private int age;
private Date startDate;
public Student(Student student) {
this.name = student.name;
this.age = student.age;
this.startDate = new Date(student.startDate.getTime());
}
}