java的构造函数和方法之间的区别
2. Java参数化构造函数
具有参数的构造函数称为参数化构造函数。
问题: 为什么使用参数化构造函数?
回答: 参数化构造函数用于为不同对象提供不同初始化的值。
参数化构造函数的示例
在这个例子中,我们创建了具有两个参数的Student
类的构造函数。构造函数中柯有任意数量的参数。
class Student4 {
int id;
String name;
Student4(int i, String n) {
id = i;
name = n;
}
void display() {
System.out.println(id + " " + name);
}
public static void main(String args[]) {
Student4 s1 = new Student4(111, "Karan");
Student4 s2 = new Student4(222, "Aryan");
s1.display();
s2.display();
}
}
运行上面代码,得到如下结果 -
111 Karan
222 Aryan
Java构造函数重载
构造方法重载是Java中的一种技术,一个类可以有任何数量的参数列表不同的构造函数。编译器通过构造函数参数列表中的参数数量及其类型来区分这些构造函数。
构造函数重载示例
class Student5 {
int id;
String name;
int age;
Student5(int i, String n) {
id = i;
name = n;
}
Student5(int i, String n, int a) {
id = i;
name = n;
age = a;
}
void display() {
System.out.println(id + " " + name + " " + age);
}
public static void main(String args[]) {
Student5 s1 = new Student5(111, "Karan");
Student5 s2 = new Student5(222, "Aryan", 25);
s1.display();
s2.display();
}
}
上面示例代码,执行后输出结果如下 -
111 Karan 0
222 Aryan 25
java的构造函数和方法之间的区别
构造函数和方法之间有许多区别,它们如下面列出 -
Java构造函数 | Java方法 |
---|---|
构造器用于初始化对象的状态(数据)。 | 方法用于暴露对象的行为。 |
构造函数不能有返回类型。 | 方法一般都有返回类型。 |
构造函数隐式调用。 | 方法要显式调用。 |
如果没有指定任何构造函数,java编译器提供一个默认构造函数。 | 在任何情况下编译器都不会提供默认的方法调用。 |
构造函数名称必须与类名称相同。 | 方法名称可以或可以不与类名称相同(随意)。 |
Java拷贝构造函数
在Java中没有复制构造函数。但是可以将一个对象的值复制到另一个中,就像C++中的复制构造函数。
在java中有很多方法可以将一个对象的值复制到另一个对象中。它们分别是:
- 通过构造函数
- 通过将一个对象的值分配给另一个对象
- 通过Object类的
clone()
方法
在这个例子中,使用java构造函数将一个对象的值复制到另一个对象中。
class Student6 {
int id;
String name;
Student6(int i, String n) {
id = i;
name = n;
}
Student6(Student6 s) {
id = s.id;
name = s.name;
}
void display() {
System.out.println(id + " " + name);
}
public static void main(String args[]) {
Student6 s1 = new Student6(111, "Karan");
Student6 s2 = new Student6(s1);
s1.display();
s2.display();
}
}
上面示例代码,执行后输出结果如下 -
111 Karan
111 Karan
不使用构造函数复制值
可以通过将对象值分配给另一个对象,将一个对象的值复制到另一个对象中。 在这种情况下,不需要创建构造函数。
class Student7 {
int id;
String name;
Student7(int i, String n) {
id = i;
name = n;
}
Student7() {
}
void display() {
System.out.println(id + " " + name);
}
public static void main(String args[]) {
Student7 s1 = new Student7(111, "Karan");
Student7 s2 = new Student7();
s2.id = s1.id;
s2.name = s1.name;
s1.display();
s2.display();
}
}
上面示例代码,执行后输出结果如下 -
111 Karan
111 Karan
问题1: 构造函数有返回值 ?
回答: 是的,构造函数返回当前类的实例(不能指定返回值类型,但它会返回一个值)。
问题2: 可以构造函数执行其他任务而不是初始化?
回答: 是的,比如:对象创建,启动线程,调用方法等。你可以像在方法中执行的任何操作一样,在构造函数中也可以做到这些。
//更多请阅读:https://www.yiibai.com/java/constructor.html#article-start