上一篇博客我们讲了类和对象的基本概念,接下来我们就要讲一下构造函数和重载。想必大家对构造函数都有一定的认识,下面我们就来一起探讨探讨。
一 、什么是构造函数
- 与类名相同
- 无返回值
- 对实例进行初始化
- 构造函数总是和new运算符一起被调用。
- 构造函数可以有0个、1个或多个参数。
public class Human {
private String name;
//这一个无参构造函数
public Human(){
}
//这是一个有参构造函数
public Human(String name){
this.name = name;
}
}
在Java的类中,如果不显示声明构造函数,JVM 会给该类一个默认的无参构造函数。当一个类声明了构造函数以后,JVM 是不会再给该类分配默认的构造函数。当然,一个类可以有多个构造函数,它们之间称为重载,下面我们就会讲到。下面我举个例子来说明构造函数的作用。
public class Human {
private String name;
private int age;
//我们在定义一个有参构造函数之后,默认无参构造函数就会被取代,因 此一般都会在该类中添加一个无参构造函数
public Human(){
}
//重载一个构造函数,下面会讲到重载
public Human(String name,int age){
this.name = name;
this.age = age;
}
public static void main(String[] args) {
//下面我们用new关键字来创建一个对象
Human human01 = new Human();
Human human02 = new Human("孙丁",18);
System.out.println("human01------->name:"+human01.name+" age:"+human01.age);
System.out.println("human02------->name:"+human02.name+" age:"+human02.age);
}
}
运行结果如下:
human01------->name:null age:0
human02------->name:孙丁 age:18
上述代码很好的说明我们通常通过有参构造函数来进行对象的初始化,而不是创建对象,创建对象是用new来完成的。
二 、方法的重载
重载的特点:
- 同一个类中多个方法有相同的名字,不同的参数列表,这种情况称为方法重载。
- 当重载方法被调用时,Java编译器根据参数的类型和数量来确定实际调用哪个重载方法的版本。
- 方法重载不考虑方法的返回类型。
- 方法重载是Java实现面向对象的多态性机制的一种方式。
public class TestOverload {
public void run(){
System.out.println("test.run():没有参数的方法");
}
public void run(int a){
System.out.println("test.run(1):一个参数的方法");
}
public void run(int a,String b){
System.out.println("test.run(1,b):二个参数的方法");
}
public void run(String a,int b){
System.out.println("test.run(a,1)参数类型顺序不同也是可以的");
}
/* 这种重载是错误的,因为重载和返回类型没有关系
public int run(String a,int b){
System.out.println("和返回值类型没有关系");
}
*/
public static void main(String[] args) {
TestOverload test = new TestOverload();
test.run();
test.run(1);
test.run(1, "b");
test.run("a",1);
}
}
运行结果:
test.run():没有参数的方法
test.run(1):一个参数的方法
test.run(1,b):二个参数的方法
test.run(a,1)参数类型顺序不同也是可以的
三 、总结
构造函数和重载的知识点很少,而且很容易理解,看完上面的内容,大家应该有了充分的认识了,接下来我准备讲解this和super关键字,希望大家多多关注。