【构造函数】
对于构造函数来说,参数的传递是最重要的,因为构造函数的函数名与类名一致,也没有返回值,那么构造函数别的不同也就只有参数了,所以唯一识别它的方法就是传参。创建对象的时候传的几个参数就会调用那个构造函数。构造函数中也可以设定一些方法,在创建的时候就可以直接调用了。
构造函数不只是为了初始化类对象,在下面运用的时候,根据下面传入的参数进行调用,就算构造代码块里面有内容,构造函数中没有显示(没有打印)也不会出现。
构造函数的功能:初始化类对象
构造函数的格式:
修饰符 类名() {
语句体;
}
构造方法的一些小细节:
1. 构造方法 没有返回值
2. 构造方法的函数名必须和类名一致
3. Java编译器的功能, 当一个类当中没有构造方法的时候,Java编译器会自动帮我们提供一个无参的构造方法
4. 当自定义类中已经存在构造方法,那么Java编译器不会在帮我们提供一个无参的构造方法5. 一个类当中可以根据不同的使用情况,定义多个构造方法,这里利用的是Java当中的函数
【重载】机制
重载:相同的函数,唯一不同的是参数(可能是参数的数量不同,可能是数据类型不同,顺序不同,除此以外并没有其他的差别)
构造方法和成员方法的区别:
返回值区别:
1. 构造函数没有返回值
2. 普通函数是必须有返回值的,就是真的没有返回值,也要void填充
函数名区别;
1. 构造函数必须是类名
2. 普通函数只要符合命名规范就OK
作用区别:
1. 构造函数是用来创建对象和初始化的
2. 普通函数想做什么就写什么,可以根据我们的实际需要来定义各种各样的函数
调用方式区别:
1. 构造函数 实际上的使用者是JVM(Java虚拟机), 是JVM在创建对象的时候要调用的方法
2. 普通函数只能通过对象或者【类名】来调用这个函数
class Car11 {
private int speed;
private String color;
public Car11(int speed, String color) {
this.speed = speed;
this.color = color;
this.run();
}
public Car11() {
System.out.println("这是一个无参的构造函数");
}
public int getSpeed() {
return speed;
}
public String getColor() {
return color;
}
public void setSpeed(int speed) {
this.speed = speed;
}
public void setColor(String color) {
this.color = color;
System.out.println("color:" + this.color);
}
public void show() {
System.out.println("Speed:" + speed + " Color:" + color);
}
public void run() {
System.out.println("在德国的高速路上以300KM/H狂飙");
}
}
public class Demo03 {
public static void main(String[] args) {
Car11 BMW = new Car11(220, "白色");
BMW.show();
//创建对象的时候,传入了一个int型一个String型,调用了run方法,
//又用被创建的对象调用了show函数。
System.out.println("===================");
Car11 Auto = new Car11(80, "红色");
Auto.show();
System.out.println("===================");
System.out.println("Auto:" + Auto);
System.out.println("Auto:" + Auto.getColor());
System.out.println("===================");
//这里打印了Auto,Auto是被创建的对象,打印对象但没有具体的内容,会出现Auto的地址,
//下面的这句的是Auto的颜色。
Auto.setColor("白色");
System.out.println("===================");
Auto.show();
System.out.println("===================");
System.out.println("BMW:" + BMW);
BMW.setColor("黄色");
System.out.println("===================");
BMW.show();
System.out.println("===================");
}
}