1構(gòu)造方法【雞肋】
1.1作用
用于在開(kāi)發(fā)過(guò)程中創(chuàng)建對(duì)象使用,創(chuàng)建對(duì)象目前的格式 new 類(lèi)名(有可能使用到的參數(shù));
類(lèi)名(有可能使用的參數(shù))膝晾;這就是構(gòu)造方法 Constructor 初始化當(dāng)前創(chuàng)建對(duì)象中的成員變量數(shù)據(jù):榧骸G⒐省!
1.2
格式:
? ? public 類(lèi)名(所需初始化參數(shù)列表) {
? ? ? ? 初始化語(yǔ)句笆凌;
}
細(xì)節(jié):
1構(gòu)造方法的名字必須是類(lèi)名圣猎,并且其他方法的名字不是類(lèi)名
2構(gòu)造方法沒(méi)有返回值類(lèi)型聲明
3初始化參數(shù)列表和正常的方法列表操作使用一致
4初始化語(yǔ)句,大多數(shù)都是一些賦值語(yǔ)句
1.3根據(jù)需求完成所需構(gòu)造方法
格式:
? ? ? ? public 類(lèi)名(所需初始化參數(shù)列表){
? ? ? ? ? ? 初始化語(yǔ)句乞而;
}
需求
1完成對(duì)于姓名在創(chuàng)建對(duì)象時(shí)初始化的構(gòu)造方法
2完成對(duì)于姓名样漆,年齡創(chuàng)建對(duì)象時(shí)初始化的構(gòu)造方法
3完成對(duì)于姓名,年齡晦闰,性別創(chuàng)建對(duì)象時(shí)初始化的構(gòu)造方法
注意:
? ? 如果在代碼中程序員自行完成了構(gòu)造方法放祟,java編譯器不再提供自動(dòng)生成的五參數(shù)構(gòu)造方法
【強(qiáng)制要求】
以后代碼無(wú)論什么時(shí)候都要給用戶(hù)提供一個(gè)五參數(shù)構(gòu)造方法使用
1.4總結(jié)
1構(gòu)造方法
功能是用于初始化創(chuàng)建對(duì)象的成員變量數(shù)據(jù)
構(gòu)造方法是一個(gè)方法,參數(shù)使用方式和方法一直致
2構(gòu)造方法選擇
java編譯器會(huì)根據(jù)構(gòu)造方法中的【參數(shù)類(lèi)型呻右,個(gè)數(shù)跪妥,順序】來(lái)做選擇,如果沒(méi)有指定的構(gòu)造方法声滥,報(bào)錯(cuò)C寄臁!落塑!
3無(wú)論什么時(shí)候一定要給當(dāng)前類(lèi)提供一個(gè)無(wú)參數(shù)構(gòu)造方法
4. 以下代碼報(bào)錯(cuò)?
?Dog(String name);?
?Dog(String color);
? ? 調(diào)用:? ? ? ??
String color = "red";? ? ? ??
Dog dog = new Dog(color);? ?
?在Java代碼中不允許出現(xiàn)相同數(shù)據(jù)類(lèi)型纽疟,個(gè)數(shù),順序的構(gòu)造方 法憾赁,和參數(shù)名沒(méi)有關(guān)系污朽,Java編譯器選擇過(guò)程中,有且只針對(duì)數(shù)據(jù)類(lèi) 型龙考,個(gè)數(shù)蟆肆,順序選擇,參數(shù)名真的無(wú)所謂
2類(lèi)對(duì)象內(nèi)存分析圖【重點(diǎn)】
3this關(guān)鍵字【雞肋】
this關(guān)鍵字表示對(duì)象本身?
?1. 調(diào)用當(dāng)前方法的類(lèi)對(duì)象?
?2. 通過(guò)構(gòu)造方法創(chuàng)建的類(lèi)對(duì)象
this表示一個(gè)對(duì)象;蘅睢Q坠Α!當(dāng)前對(duì)象;航ΑI咚稹!
4封裝【重點(diǎn),規(guī)范】
4.1面向?qū)ο笕筇卣?/h3>
封裝
? ? ? ? 最基本的思想
繼承
? ? ? ? 子承父業(yè)淤齐,你長(zhǎng)得真的像你父母
多態(tài)
? ? ? ? 狗束世,貓,都是動(dòng)物
? ? ? ? U盤(pán)床玻,鍵盤(pán)毁涉,鼠標(biāo),都是USB設(shè)備
【最難忘的是多態(tài)锈死,最簡(jiǎn)單的也是多態(tài)】
4.2封裝贫堰,不單單是對(duì)于類(lèi)的封裝
歸納總結(jié)!4!其屏!?
?循環(huán)封裝過(guò)程?
?方法封裝功能?
?類(lèi)封裝數(shù)據(jù)?
?框架封裝模塊
一段代碼使用了三遍,做成一個(gè)循環(huán)? ?
一個(gè)循環(huán)使用了三遍缨该,做成一個(gè)方法? ?
一個(gè)方法使用了三遍偎行,做成一個(gè)工具類(lèi)? ??
一個(gè)工具類(lèi)使用了三遍,做成一個(gè)文檔? ??
一個(gè)文檔使用了三遍贰拿,做成一篇博客
4.3java中規(guī)范化封裝【javaBean規(guī)范】
要求:
1所有的成員變量全部私有化【private修飾】
2要求至少完成一個(gè)無(wú)參數(shù)構(gòu)造方法蛤袒,其他無(wú)所謂
3要求給予所有的成員變量對(duì)應(yīng)的setter和getter方法
4.3.1
private?
? ? 私有化內(nèi)容,使用private修飾的成員變量膨更,成員方法和構(gòu)造方法妙真,有且只能類(lèi)內(nèi)使用,類(lèi)外沒(méi)有操作權(quán)限
? ? ?使用private修飾的內(nèi)容有且只能在class所處大括號(hào)以?xún)?nèi)使用
public?
? ? 公開(kāi)內(nèi)容荚守,只要存在對(duì)應(yīng)的類(lèi)對(duì)象珍德,都可以通過(guò)類(lèi)對(duì)象調(diào)用類(lèi)內(nèi)的public修飾的成員變量和成員方法
4.3.2解決私有化成員變量賦值和取值操作問(wèn)題
private私有化修飾的成員變量,類(lèi)外不能通過(guò)類(lèi)對(duì)象操作矗漾,取值锈候,賦值
JavaBean規(guī)范定了
? ????? setter ==> 賦值操作
格式:public void? set 成員變量名(對(duì)應(yīng)成員變量數(shù)據(jù)類(lèi)型參數(shù)){
????????????賦值操作;
}
? ? getter == > 取值操作
? ? public 對(duì)應(yīng)成員變量數(shù)據(jù)類(lèi)型返回值 get成員變量名字(){
? ? ? ? return 成員變量敞贡;
}
注意?
?1. 方法格式固定泵琳,setter和getter方法操作過(guò)程不能修改?
?2. 方法需要符合命名規(guī)范,小駝峰命名法?
?3. boolean類(lèi)型數(shù)據(jù)較特殊 boolean類(lèi)型的成員變量getter方法要求是is開(kāi)頭
4.3.3關(guān)于javaBean規(guī)范的總結(jié)
JavaBean規(guī)范制定的要求?
?1. 要求Java中的所有實(shí)體類(lèi)成員變量全部私有化嫡锌,最少提供 一個(gè)無(wú)參數(shù)構(gòu)造方法虑稼,對(duì)應(yīng)成員變量實(shí)現(xiàn)setter和getter方法?
?2. JavaBean規(guī)范,是為了后期開(kāi)發(fā)匯總更好的代碼適配度势木, 提高代碼運(yùn)行的統(tǒng)一性,能夠滿足框架的使用?
?3. JavaBean規(guī)范只是一個(gè)規(guī)范歌懒,而且是作為一個(gè)基礎(chǔ)規(guī)范啦桌, 操作都是可以使用快捷鍵來(lái)完成的!!
5多類(lèi)合作【重點(diǎn)】
5.1汽車(chē)類(lèi)和修理廠類(lèi)分析
汽車(chē)?
?????????可以看做是一個(gè)類(lèi)?
?成員變量:?
?????????名字
?????????顏色?
?????????輪胎個(gè)數(shù)?
?成員方法:?
?????????飆車(chē)?
?????????????????飆車(chē)有要求甫男,輪胎個(gè)數(shù)必須是4個(gè)?
修理廠?
?????????可以看做是一個(gè)類(lèi)?
?成員變量:?
?????????名字
?????????地址?
?????????聯(lián)系方式?
?成員方法:?
?????????修理汽車(chē)的方法【重點(diǎn)】 該方法是需要一個(gè)汽車(chē)類(lèi)的對(duì)象
汽車(chē)類(lèi)代碼
package com.qfen.d;
public class Car {
private String name;
private String color;
private int wheelCount;
public Car() {
}
public Car(String name, String color, int wheelCount) {
this.name = name;
this.color = color;
this.wheelCount = wheelCount;
}
public void race() {
if (4 == wheelCount) {
System.out.println("開(kāi)著" + color + "的" + name + "在秋名山320KM/H飆車(chē)");
} else {
System.out.println("輪胎gg思密達(dá)且改,修理一下");
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getWheelCount() {
return wheelCount;
}
public void setWheelCount(int wheelCount) {
this.wheelCount = wheelCount;
}
}
修車(chē)廠代碼
package com.qfen.d;
public class Factory {
private String name;
private String address;
private String tel;
public Factory() {
}
public Factory(String name, String address, String tel) {
this.name = name;
this.address = address;
this.tel = tel;
}
public void repair(Car car) throws InterruptedException {
if (car.getWheelCount() < 4) {
System.out.println("車(chē)胎有問(wèn)題需要修理");
car.setWheelCount(4);
Thread.sleep(1000);
System.out.println("1w");
} else {
System.out.println("車(chē)子正常");
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
}
主代碼
package com.qfen.d;
public class Demo {
public static void main(String[] args) throws InterruptedException {
Car car = new Car("奔馳","黑色",4);
for (int i = 0; i < 10; i++) {
car.race();
Thread.sleep(500);
}
Thread.sleep(1000);
System.out.println("輪胎爆炸了一個(gè)");
car.setWheelCount(3);
Thread.sleep(500);
car.race();
Factory factory = new Factory();
factory.setAddress("召喚師峽谷");
factory.setName("無(wú)敵汽修");
factory.setTel("110");
factory.repair(car);
for (int i = 0; i < 10; i++) {
Thread.sleep(500);
}
}
}
飆車(chē) ---->? ?少輪子 ---->修車(chē)