? 【構(gòu)造函數(shù)】
對于構(gòu)造函數(shù)來說豌鸡,參數(shù)的傳遞是最重要的蛾默,因為構(gòu)造函數(shù)的函數(shù)名與類名一致遏佣,也沒有返回值掩缓,那么構(gòu)造函數(shù)別的不同也就只有參數(shù)了,所以唯一識別它的方法就是傳參鼠渺。創(chuàng)建對象的時候傳的幾個參數(shù)就會調(diào)用那個構(gòu)造函數(shù)鸭巴。構(gòu)造函數(shù)中也可以設(shè)定一些方法,在創(chuàng)建的時候就可以直接調(diào)用了拦盹。
構(gòu)造函數(shù)不只是為了初始化類對象鹃祖,在下面運用的時候,根據(jù)下面?zhèn)魅氲膮?shù)進行調(diào)用普舆,就算構(gòu)造代碼塊里面有內(nèi)容恬口,構(gòu)造函數(shù)中沒有顯示(沒有打印)也不會出現(xiàn)沼侣。
構(gòu)造函數(shù)的功能:初始化類對象
???
構(gòu)造函數(shù)的格式:
?????????????????????????? ? ??修飾符 類名() {
???????????????????????????????語句體;
???????????????????????????????}
????
構(gòu)造方法的一些小細節(jié):
?1. 構(gòu)造方法 沒有返回值
2. 構(gòu)造方法的函數(shù)名必須和類名一致
3. Java編譯器的功能祖能, 當一個類當中沒有構(gòu)造方法的時候,Java編譯器會自動幫我們提供一個無參的構(gòu)造方法
4. 當自定義類中已經(jīng)存在構(gòu)造方法蛾洛,那么Java編譯器不會在幫我們提供一個無參的構(gòu)造方法5. 一個類當中可以根據(jù)不同的使用情況芯杀,定義多個構(gòu)造方法,這里利用的是Java當中的函數(shù)
【重載】機制
重載:相同的函數(shù)雅潭,唯一不同的是參數(shù)(可能是參數(shù)的數(shù)量不同,可能是數(shù)據(jù)類型不同却特,順序不同扶供,除此以外并沒有其他的差別)
?構(gòu)造方法和成員方法的區(qū)別:
? ??返回值區(qū)別:
? ???1. 構(gòu)造函數(shù)沒有返回值
? ???2. 普通函數(shù)是必須有返回值的,就是真的沒有返回值裂明,也要void填充
? ??
? ??函數(shù)名區(qū)別;
? ???1. 構(gòu)造函數(shù)必須是類名
? ???2. 普通函數(shù)只要符合命名規(guī)范就OK
? ??
? ??作用區(qū)別:
? ???1. 構(gòu)造函數(shù)是用來創(chuàng)建對象和初始化的
?????2. 普通函數(shù)想做什么就寫什么椿浓,可以根據(jù)我們的實際需要來定義各種各樣的函數(shù)
? ??
? ??調(diào)用方式區(qū)別:
? ???1. 構(gòu)造函數(shù) 實際上的使用者是JVM(Java虛擬機), 是JVM在創(chuàng)建對象的時候要調(diào)用的方法
? ???2. 普通函數(shù)只能通過對象或者【類名】來調(diào)用這個函數(shù)
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("這是一個無參的構(gòu)造函數(shù)");
}
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();
//創(chuàng)建對象的時候,傳入了一個int型一個String型,調(diào)用了run方法扳碍,
//又用被創(chuàng)建的對象調(diào)用了show函數(shù)提岔。
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是被創(chuàng)建的對象笋敞,打印對象但沒有具體的內(nèi)容碱蒙,會出現(xiàn)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("===================");
}
}