a.累加求和思想:求1~100的和,求數(shù)組/集合中元素的和,求偶數(shù)的數(shù),求總分
? ? int sum=0//循環(huán)外部定義sum變量,循環(huán)里面對(duì)每個(gè)元素累加
? ? for (; ; ) {
? ? //sum+=數(shù)據(jù)?
? ? }
? ? System.out.println(sum);
? b.計(jì)數(shù)器思想:折紙次數(shù),水仙花個(gè)數(shù)
?? int count=0;
?? for (; ; ) {//這只是個(gè)結(jié)構(gòu)
? //滿足某些條件 count++
?? }
?? System.out.println(count);
? c.拆解邏輯思想:把大問(wèn)題拆成小問(wèn)題,每個(gè)小問(wèn)題考慮用方法實(shí)現(xiàn)
? ? 1.字符數(shù)組為了使用String類中的方法,把字符數(shù)組變成字符串
? ? 2.已知文件中存在用戶名,用戶錄入判斷是否重復(fù)
? ? ? a.讀取文件中的內(nèi)容=>存儲(chǔ)集合中
? ? ? b.拿著用戶錄入的用戶名與集合中的用戶名一一對(duì)比
? ? ? ? 一旦發(fā)現(xiàn)重復(fù),立馬返回false,否則返回true
? d.重置標(biāo)記思想
? ? 1.已知容器中裝滿了數(shù)據(jù),我們要在容器查找某個(gè)元素是否已經(jīng)存在
? ? String[] str={"魚(yú)翅","鮑魚(yú)","海參","海膽"}
? ? String findStr="鮑魚(yú)";//String findStr="海馬"
? ? boolean flag=false;//為了區(qū)分找到和循環(huán)遍歷完沒(méi)找到的兩種情況
? ? for (int i=0;i<str.length;i++ ) {
?? ? ? if(str[i].equals(findStr)){
? ? ? ? ? ? flag=true;
?? ? ? ? ? ? break;//找到之后直接停止查找
?? ? ? }
? ? }
?? ? if(flag){
?? ? //一定找到
?? ? }else{
?? ? //沒(méi)找到
?? ? }
面向過(guò)程:強(qiáng)調(diào)的過(guò)程,步驟
?* 面向?qū)ο? 是一種思想,強(qiáng)調(diào)對(duì)象
?*
?*? 在現(xiàn)實(shí)生活中:先有對(duì)象,類是我們?nèi)烁鶕?jù)實(shí)物的特征分類
?*? 在代碼中:必須先有類,通過(guò)類可以創(chuàng)建無(wú)數(shù)個(gè)對(duì)象
?* this關(guān)鍵字:
?* 1.this 的作用:
?* 區(qū)分局部變量和成員變量同名的情況
?* this.xxx 那么這個(gè)xxx是成員變量
?* 沒(méi)有this. 比如? name,那么這個(gè)是指局部變量
?*? 2.this的本質(zhì)
?*? this代表當(dāng)前對(duì)象,就是this所在的方法,被誰(shuí)調(diào)用,誰(shuí)就是當(dāng)前對(duì)象
?匿名對(duì)象:
?* ? 沒(méi)有名字的對(duì)象,是指只創(chuàng)建對(duì)象 但是不用變量來(lái)接收
?* 匿名對(duì)象的特點(diǎn):
?* 匿名也是一個(gè)對(duì)象,完全擁有對(duì)象的功能
?* 1.匿名對(duì)象.成員變量 = 10;
?* 2.syso(匿名對(duì)象.成員變量);
?* 3.匿名對(duì)象.方法名();
?*? 缺點(diǎn):一個(gè)匿名對(duì)象只能使用一次
?*
?*? 當(dāng)一個(gè)對(duì)象 我只想使用一次的時(shí)候,那么可以考慮用匿名對(duì)象
?方法的參數(shù):可以是基本類型,也可以是引用類型
?* 如果方法參數(shù)是引用類型,那么調(diào)用方法時(shí)需要的是該引用類型的對(duì)象
?*
?* 舉例子:殺孫猴子
?*
?* 方法的返回值:可以void 可以基本類型,也可以是引用類型
?* 如果方法的返回值是引用類型,那么調(diào)用方法 我們要返回的是該類的一個(gè)對(duì)象
?繼承:java面向?qū)ο蟮氖侨筇匦灾?封裝,繼承,多態(tài))
?*
?封裝:當(dāng)代碼多了,用方法封裝,當(dāng)方法多了,用類封裝,當(dāng)類多了,用包封裝
?* 組合關(guān)系:
?* 當(dāng)一個(gè)自定義類型A的成員變量的數(shù)據(jù)類型是自定義類型B時(shí)译柏,A類與B類叫做組合關(guān)系。
?*
?* 舉例: 家庭
?* public class Family{
?* private Person wife;
?* private Person Husband;
?* }
?*
?* 現(xiàn)實(shí)生活中的繼承: 由孩子 繼承? 父輩的財(cái)產(chǎn)
?*
?* 代碼中繼承: 由 一個(gè)類(子類/派生類) 去繼承另外一個(gè)類(父類/超類/基類)
?* 子類可以繼承父類一切的可繼承的屬性和方法
?*
?* 繼承的代碼格式:
?* public class 子類名字? extends 父類名字{
?* //成員變量
?* //成員方法
?* }
?*
?* 舉例: 員工類作為父類,他有三個(gè)子類(教師,助教,班主任)
?1.繼承過(guò)程中 子父類成員變量的特點(diǎn):
?* 通過(guò)子類對(duì)象訪問(wèn)成員變量時(shí):
?* 如果這個(gè)成員變量子類有,那么優(yōu)先訪問(wèn)子類自己的
?* 如果這個(gè)成員變量子類沒(méi)有,那么再去方問(wèn)父類繼承下來(lái)的
?* 如果父類也沒(méi)有,編譯就報(bào)錯(cuò)
?*
?* 2.繼承過(guò)程中 子父類成員方法的特點(diǎn):
?* 成員方法的特點(diǎn)和上面的成員變量的特點(diǎn)是一樣
?*
?* 總結(jié):繼承過(guò)程中 子父類成員變量/成員方法的特點(diǎn):
?* 子類有用子類自己的,子類沒(méi)有再去找父類,父類還沒(méi)有編譯報(bào)錯(cuò)
?java中類的設(shè)計(jì)原則:
?* 向上抽取共性原則
?*
?* 定義4個(gè)類:
?* 貓,狗,樹(shù),花
?繼承中子類中出現(xiàn)與父類重名的成員變量
?*
?* 1.this:區(qū)分成員變量和局部變量同名時(shí)
?*
?* 2.super:只能在子類中使用,顯示訪問(wèn)父類繼承過(guò)來(lái)變量或者方法
?* 格式:super.變量名
?* super.方法名();
?* 作用:區(qū)分父類繼承過(guò)來(lái)的成員變量 和 子類自己擁有的成員變量同名的情況
?繼承中方法重寫(xiě)
?*
?* 1.方法的重載(overload):在一個(gè)類中,java允許方法名相同 但是參數(shù)列表必須不同
?* 參數(shù)列表必須不同:參數(shù)的個(gè)數(shù),參數(shù)的類型,參數(shù)的順序不同
?*
?* 2.方法的重寫(xiě)/覆寫(xiě)/覆蓋(override):子類和父類中的方法的關(guān)系,子類出現(xiàn)了父類一模一樣的方法
? 總結(jié)以上案例:什么時(shí)候需要重寫(xiě)父類的方法?
?* 當(dāng)子類發(fā)現(xiàn)父類的某一個(gè)方法,對(duì)于子類來(lái)說(shuō)不適合,那么子類可以重寫(xiě)
? this.成員變量: 訪問(wèn)本類自己的成員變量
?* this.成員方法: 訪問(wèn)本類自己的成員方法
?*
?* super.成員變量:訪問(wèn)父類繼承過(guò)來(lái)的成員變量
?* super.成員方法:訪問(wèn)父類繼承過(guò)來(lái)的成員方法
?* super表示子類中父類繼承過(guò)來(lái)的成員的標(biāo)識(shí).
?* 除了以上用法 還有下面的用法
?*
?* this();//this 的語(yǔ)句形式
?* 在本類內(nèi)部,可以調(diào)用其他的構(gòu)造
?* this(參數(shù));//在本類內(nèi)部調(diào)用其他構(gòu)造
?*
?* 需求1,創(chuàng)建一個(gè)Dog的對(duì)象,要求:無(wú)論通過(guò)何種構(gòu)造方法創(chuàng)建,Dog對(duì)象的年齡就是10歲.
?*
?* super();//super的語(yǔ)句形式
?* 在本類內(nèi)部調(diào)用父類的構(gòu)造
?* 子類所有的構(gòu)造(無(wú)論有參數(shù)的 還是無(wú)參數(shù)的)都會(huì)默認(rèn)第一行調(diào)用父類的無(wú)參數(shù)構(gòu)造
?*
?* 為什么子類會(huì)默認(rèn)調(diào)用父類的構(gòu)造:面向?qū)ο笤O(shè)計(jì)的一個(gè)原則 單一職責(zé)原則
?* 一個(gè)類 不能太"累",只負(fù)責(zé)自己數(shù)據(jù)
?面向?qū)ο?開(kāi)閉原則
?對(duì)修改關(guān)閉,對(duì)擴(kuò)展開(kāi)放.
?已經(jīng)寫(xiě)好的功能模塊(類),
?我們不建議修改,但是我們可以擴(kuò)展.
?抽象類:含有抽象方法的類叫做抽象類
?* 抽象類是不能創(chuàng)建對(duì)象(java的規(guī)定)
?* 抽象類天生就是作為父類
?*
?* 抽象方法:一個(gè)方法不知道怎么去實(shí)現(xiàn),那么我們可以不寫(xiě)方法體,還要在方法的前加上abstract修飾
?*
?*
?* 總結(jié):一個(gè)子類 繼承了抽象類, 那么必須重寫(xiě)抽象類中的所有抽象方法,然后才能創(chuàng)建對(duì)象
?* 否則,這個(gè)子類還是一個(gè)抽象類,不能創(chuàng)建對(duì)象
?*
?* 關(guān)于抽象類的注意事項(xiàng):
?* 1.抽象類 中 一定有抽象方法嗎?NO,如果一個(gè)類沒(méi)有抽象方法,也可以是抽象類,但是不讓我們創(chuàng)建該類的對(duì)象
?* 2.抽象類中是可以不定義抽象方法的姐霍,此時(shí)僅僅是不讓該類創(chuàng)建對(duì)象鄙麦,用于某些特殊的設(shè)計(jì)需要典唇。
?* 3.設(shè)計(jì)時(shí)由具體類抽取出抽象類,而開(kāi)發(fā)階段應(yīng)該先定義抽象父類胯府,再根據(jù)不同需求由父類定義子類介衔。
//子類繼承了抽象類,會(huì)報(bào)錯(cuò)
//1.給本類加上abstract修飾
//2.重寫(xiě)那個(gè)抽象方法
面向?qū)ο笫褂?
?* ? 名詞提煉法: 小明 在公交車(chē)上牽著一條嘴里叼著熱狗的狗
?* 小明:人類
?* 公交車(chē):車(chē)類
?* 熱狗:食物類
?* 狗:動(dòng)物/狗類
?*? 案例: 士兵突擊(標(biāo)題黨)
?* 一個(gè)士兵開(kāi)槍打死了一個(gè)鬼子
?* 士兵: Soldier
?*? 名字,等級(jí)
?*? 方法:開(kāi)槍
?* 槍:? Gun
?* 名稱,顏色
?* 方法:發(fā)射子彈
?* 鬼子:Animal
?* 昵稱
?* 方法:會(huì)死