a.累加求和思想:求1~100的和,求數組/集合中元素的和,求偶數的數,求總分java
int sum=0//循環外部定義sum變量,循環裏面對每一個元素累加數組
for (; ; ) {ide
//sum+=數據 this
}設計
System.out.println(sum);對象
b.計數器思想:摺紙次數,水仙花個數繼承
int count=0;開發
for (; ; ) {//這只是個結構字符串
//知足某些條件 count++編譯
}
System.out.println(count);
c.拆解邏輯思想:把大問題拆成小問題,每一個小問題考慮用方法實現
1.字符數組爲了使用String類中的方法,把字符數組變成字符串
2.已知文件中存在用戶名,用戶錄入判斷是否重複
a.讀取文件中的內容=>存儲集合中
b.拿着用戶錄入的用戶名與集合中的用戶名一一對比
一旦發現重複,立馬返回false,不然返回true
d.重置標記思想
1.已知容器中裝滿了數據,咱們要在容器查找某個元素是否已經存在
String[] str={"魚翅","鮑魚","海蔘","海膽"}
String findStr="鮑魚";//String findStr="海馬"
boolean flag=false;//爲了區分找到和循環遍歷完沒找到的兩種狀況
for (int i=0;i<str.length;i++ ) {
if(str[i].equals(findStr)){
flag=true;
break;//找到以後直接中止查找
}
}
if(flag){
//必定找到
}else{
//沒找到
}
面向過程:強調的過程,步驟
* 面向對象: 是一種思想,強調對象
*
* 在現實生活中:先有對象,類是咱們人根據實物的特徵分類
* 在代碼中:必須先有類,經過類能夠建立無數個對象
* this關鍵字:
* 1.this 的做用:
* 區分局部變量和成員變量同名的狀況
* this.xxx 那麼這個xxx是成員變量
* 沒有this. 好比 name,那麼這個是指局部變量
* 2.this的本質
* this表明當前對象,就是this所在的方法,被誰調用,誰就是當前對象
匿名對象:
* 沒有名字的對象,是指只建立對象 可是不用變量來接收
* 匿名對象的特色:
* 匿名也是一個對象,徹底擁有對象的功能
* 1.匿名對象.成員變量 = 10;
* 2.syso(匿名對象.成員變量);
* 3.匿名對象.方法名();
* 缺點:一個匿名對象只能使用一次
*
* 當一個對象 我只想使用一次的時候,那麼能夠考慮用匿名對象
方法的參數:能夠是基本類型,也能夠是引用類型
* 若是方法參數是引用類型,那麼調用方法時須要的是該引用類型的對象
*
* 舉例子:殺孫猴子
*
* 方法的返回值:能夠void 能夠基本類型,也能夠是引用類型
* 若是方法的返回值是引用類型,那麼調用方法 咱們要返回的是該類的一個對象
繼承:java面向對象的是三大特性之一(封裝,繼承,多態)
*
封裝:當代碼多了,用方法封裝,當方法多了,用類封裝,當類多了,用包封裝
* 組合關係:
* 當一個自定義類型A的成員變量的數據類型是自定義類型B時,A類與B類叫作組合關係。
*
* 舉例: 家庭
* public class Family{
* private Person wife;
* private Person Husband;
* }
*
* 現實生活中的繼承: 由孩子 繼承 父輩的財產
*
* 代碼中繼承: 由 一個類(子類/派生類) 去繼承另一個類(父類/超類/基類)
* 子類能夠繼承父類一切的可繼承的屬性和方法
*
* 繼承的代碼格式:
* public class 子類名字 extends 父類名字{
* //成員變量
* //成員方法
* }
*
* 舉例: 員工類做爲父類,他有三個子類(教師,助教,班主任)
1.繼承過程當中 子父類成員變量的特色:
* 經過子類對象訪問成員變量時:
* 若是這個成員變量子類有,那麼優先訪問子類本身的
* 若是這個成員變量子類沒有,那麼再去方問父類繼承下來的
* 若是父類也沒有,編譯就報錯
*
* 2.繼承過程當中 子父類成員方法的特色:
* 成員方法的特色和上面的成員變量的特色是同樣
*
* 總結:繼承過程當中 子父類成員變量/成員方法的特色:
* 子類有用子類本身的,子類沒有再去找父類,父類尚未編譯報錯
java中類的設計原則:
* 向上抽取共性原則
*
* 定義4個類:
* 貓,狗,樹,花
繼承中子類中出現與父類重名的成員變量
*
* 1.this:區分紅員變量和局部變量同名時
*
* 2.super:只能在子類中使用,顯示訪問父類繼承過來變量或者方法
* 格式:super.變量名
* super.方法名();
* 做用:區分父類繼承過來的成員變量 和 子類本身擁有的成員變量同名的狀況
繼承中方法重寫
*
* 1.方法的重載(overload):在一個類中,java容許方法名相同 可是參數列表必須不一樣
* 參數列表必須不一樣:參數的個數,參數的類型,參數的順序不一樣
*
* 2.方法的重寫/覆寫/覆蓋(override):子類和父類中的方法的關係,子類出現了父類如出一轍的方法
總結以上案例:何時須要重寫父類的方法?
* 當子類發現父類的某一個方法,對於子類來講不適合,那麼子類能夠重寫
this.成員變量: 訪問本類本身的成員變量
* this.成員方法: 訪問本類本身的成員方法
*
* super.成員變量:訪問父類繼承過來的成員變量
* super.成員方法:訪問父類繼承過來的成員方法
* super表示子類中父類繼承過來的成員的標識.
* 除了以上用法 還有下面的用法
*
* this();//this 的語句形式
* 在本類內部,能夠調用其餘的構造
* this(參數);//在本類內部調用其餘構造
*
* 需求1,建立一個Dog的對象,要求:不管經過何種構造方法建立,Dog對象的年齡就是10歲.
*
* super();//super的語句形式
* 在本類內部調用父類的構造
* 子類全部的構造(不管有參數的 仍是無參數的)都會默認第一行調用父類的無參數構造
*
* 爲何子類會默認調用父類的構造:面向對象設計的一個原則 單一職責原則
* 一個類 不能太"累",只負責本身數據
面向對象 開閉原則
對修改關閉,對擴展開放.
已經寫好的功能模塊(類),
咱們不建議修改,可是咱們能夠擴展.
抽象類:含有抽象方法的類叫作抽象類
* 抽象類是不能建立對象(java的規定)
* 抽象類天生就是做爲父類
*
* 抽象方法:一個方法不知道怎麼去實現,那麼咱們能夠不寫方法體,還要在方法的前加上abstract修飾
*
*
* 總結:一個子類 繼承了抽象類, 那麼必須重寫抽象類中的全部抽象方法,而後才能建立對象
* 不然,這個子類仍是一個抽象類,不能建立對象
*
* 關於抽象類的注意事項:
* 1.抽象類 中 必定有抽象方法嗎?NO,若是一個類沒有抽象方法,也能夠是抽象類,可是不讓咱們建立該類的對象
* 2.抽象類中是能夠不定義抽象方法的,此時僅僅是不讓該類建立對象,用於某些特殊的設計須要。
* 3.設計時由具體類抽取出抽象類,而開發階段應該先定義抽象父類,再根據不一樣需求由父類定義子類。
//子類繼承了抽象類,會報錯
//1.給本類加上abstract修飾
//2.重寫那個抽象方法
面向對象使用:
* 名詞提煉法: 小明 在公交車上牽着一條嘴裏叼着熱狗的狗
* 小明:人類
* 公交車:車類
* 熱狗:食物類
* 狗:動物/狗類
* 案例: 士兵突擊(標題黨)
* 一個士兵開槍打死了一個鬼子
* 士兵: Soldier
* 名字,等級
* 方法:開槍
* 槍: Gun
* 名稱,顏色
* 方法:發射子彈
* 鬼子:Animal
* 暱稱
* 方法:會死