您好,登錄后才能下訂單哦!
面向?qū)ο缶幊?/span> |
筆記Notes
|
1.創(chuàng)建一個類,并在類中提供必要的屬性和方法 2.由類派生出對象。(創(chuàng)建對象) 3.調(diào)用對象中的屬性和方法。(對象名.屬性名/方法名) ? ? ? ? ? ? ?//創(chuàng)建一個類 class?Person{ ??????????//屬性 ??????????String?name; ??????????int?age; ??????????char?sex; ?????????? ??????????//方法 ??????????public?void?run(){ ???????????????????System.out.println(name?+?"跑起來"); ??????????} ?????????? ??????????public?void?say(){ ???????????????????System.out.println(name?+?"今年"?+?age); ??????????} } ? ? // main 方法中 ???????????????????Person?person?=?new?Person(); ???????????????????//調(diào)用屬性 :對象名.屬性名 ???????????????????person.name?=?"王慶港";?//給屬性賦值 ???????????????????person.age?= 23; ???????????????????//獲取屬性的值 ???????????????????String?name?=?person.name; ???????????????????System.out.println("name="?+?name); ???????????????????//調(diào)用方法 :對象名.方法名 ???????????????????person.run(); ???????????????????person.say();
類的成員之 :屬性(成員變量) 變量的分類: ①按照數(shù)據(jù)類型分 :基本數(shù)據(jù)類型?vs?引用數(shù)據(jù)類型 ②按照位置分 :成員變量??vs?局部變量 成員變量和局部變量??相同點(diǎn): ①變量的聲明的格式都是一樣的。 ②變量都有作用域 ③變量都是先聲明后使用 成員變量和局部變量?不同點(diǎn): ①局部變量:在方法里,方法的形參,構(gòu)造器中,構(gòu)造器的形參,代碼塊 ②成員變量:?在類中方法等結(jié)構(gòu)外 權(quán)限修飾符: ①局部變量:不能使用權(quán)限修飾符修飾 ②成員變量:可以使用四種權(quán)限修飾符(public protected 缺省的(default) private) 內(nèi)存: ①局部變量:在內(nèi)存的棧中 ②成員變量:在內(nèi)存的堆(對象)中 默認(rèn)值: ①局部變量 :沒有默認(rèn)值 ②成員變量 :有默認(rèn)值(和數(shù)組元素的默認(rèn)值是一樣的) ; ??????????int?legs; ??????????protected?boolean?isLive?=?true; ??????????{//代碼塊 ???????????????????String?address?=?"";//局部變量 ??????????} ??????????public?Animal(){}? ??????????//構(gòu)造器 ??????????public?Animal(int?sex){//構(gòu)造器的形參 ???????????????????int?a?= 10;//局部變量 ??????????} ??????????//方法 ??????????public?void?say(int?sex){//方法的形參 ???????????????????//局部變量 ???????????????????int?age?= 10; ???????????????????age?= 20; ???????????????????name?=?"大錘"; ??????????} } 不定義對象的句柄,而直接調(diào)用這個對象的方法。這樣的對象叫做匿名對象。 如:new Person().shout(); 類的成員:方法(method) Java里的方法不能獨(dú)立存在,所有的方法必須定義在類里。 方法的聲明格式: 修飾符?返回值類型?方法名(參數(shù)類型?形參1,?參數(shù)類型?形參2,?….){ 方法體程序代碼 return?返回值; } 權(quán)限修飾符 :public protected 缺省的? private (先用public) ①void/具體的類型(基本數(shù)據(jù)類型、引用數(shù)據(jù)類型): ②void : 表示該方法沒有返回值 具體的類型 :調(diào)用該方法會有返回值。 注意:返回?cái)?shù)據(jù)需要使用return關(guān)鍵字。return 后面跟需要返回的數(shù)據(jù)。 方法名 :只需要遵守標(biāo)識符的規(guī)則和規(guī)范即可 (形參相同的情況下,同一個類中的方法名不能相同)。 形參列表 :可以有0個1個或多個。多個之間使用","隔開。 ①作用 :用來通知方法的調(diào)用者調(diào)用此方法時需要傳遞數(shù)據(jù)。 ②注意:實(shí)參的類型必須和形參的類型保持一致 方法體 :方法功能的具體體現(xiàn)。 注意 :只有調(diào)用方法時方法體才會執(zhí)行。 對象數(shù)組題目: 定義類Student,包含三個屬性:學(xué)號number(int),年級state(int),成績score(int)。創(chuàng)建20個學(xué)生對象,學(xué)號為1到20,年級和成績都由隨機(jī)數(shù)確定。 問題一:打印出3年級(state值為3)的學(xué)生信息。 問題二:使用冒泡排序按學(xué)生成績排序,并遍歷所有學(xué)生信息 提示: 1)?生成隨機(jī)數(shù):Math.random(),返回值類型double;? 2)?四舍五入取整:Math.round(double d),返回值類型long。 class?Student1{ ??????????int??number; ??????????int?state; ??????????int?score; ?????????? ??????????@Override ??????????public?String toString() { ???????????????????return?"Student1 [number="?+?number?+?", state="?+?state?+?", score="?+?score?+?"]"; ??????????} ?????????? } public?class?StuInfo { ??????????public?static?void?main(String[]?args) { ???????????????????// 創(chuàng)建對象數(shù)組 ???????????????????Student1[]?studentArr?=?new?Student1[20]; ???????????????????// 循環(huán)創(chuàng)建對象并賦值,傳給對象 ??????????????????? ???????????????????for?(int?i?= 0;?i?< 20;?i++) { ?????????????????????????????Student1?student1?=?new?Student1(); ?????????????????????????????student1.number?=?i; ?????????????????????????????student1.state?= (int)Math.round( (Math.random()*7)); ?????????????????????????????student1.score?= (int) (Math.random()*100);??? ?????????????????????????????studentArr[i] =?student1; ???????????????????} ???????????????????System.out.println("---------打印排序前的學(xué)生信息-------------"); ???????????????????for?(int?i?= 0;?i?<?studentArr.length;?i++) { ?????????????????????????????System.out.println(studentArr[i]); ???????????????????} ??????????????????? ???????????????????System.out.println("----------打印state為3的學(xué)生信息---------"); ???????????????????// 循環(huán)查找對象數(shù)組中state值為3的對象,打印輸出對象信息 ???????????????????for?(int?i?= 0;?i?<?studentArr.length;?i++) { ?????????????????????????????if?(studentArr[i].state?== 3) { ??????????????????????????????????????System.out.println(studentArr[i]); ?????????????????????????????} ???????????????????} ???????????????????System.out.println("----------------------------------------"); ???????????????????// 使用冒泡排序按學(xué)生成績排序,并遍歷所有學(xué)生信息 ???????????????????// 思路:兩個循環(huán)遍歷數(shù)組中的對象的成績,若對象的成績小于后一個,則交換對象的位置 ???????????????????for?(int?i?= 0;?i?<?studentArr.length?-1;?i++) {?// 外層循環(huán)決定冒泡排序的次數(shù),為數(shù)組長度-1 ?????????????????????????????for?(int?j?= 0;?j?<?studentArr.length?-?i?-1;?j++) {?// 內(nèi)層循環(huán)決定每次多少次冒泡,為 ??????????????????????????????????????if?(studentArr[j].score?>?studentArr[j+1].score) {?// 如果前面的對象小于大于后面的,就叫交換類數(shù)組地址 ????????????????????????????????????????????????Student1?temp?=?studentArr[j]; ????????????????????????????????????????????????studentArr[j] =?studentArr[j+1]; ????????????????????????????????????????????????studentArr[j+1] =?temp; ??????????????????????????????????????} ?????????????????????????????} ???????????????????} ???????????????????// 注意?。。。。。。。。?! ???????????????????// 冒泡排序交換的值的數(shù)組的下標(biāo)為內(nèi)循環(huán)的循環(huán)變量 ???????????????????System.out.println("------打印排序后的信息-------"); ???????????????????// 打印排序后的信息 ???????????????????for?(int?i?= 0;?i?<?studentArr.length;?i++) { ?????????????????????????????System.out.println(studentArr[i]); ?????????????????????????????????????? ???????????????????} ??????????????????? ??????????} } 重載的概念、特點(diǎn)、實(shí)例 ①在同一個類中,允許存在一個以上的同名方法,只要它們的參數(shù)個數(shù)或者參數(shù)類型不同即可。 ②與返回值類型無關(guān),只看參數(shù)列表,且參數(shù)列表必須不同。 (參數(shù)個數(shù)或參數(shù)類型)。調(diào)用時,根據(jù)方法參數(shù)列表的不同來區(qū)別。 ③示例: //返回兩個整數(shù)的和 ??int?add(int?x,int?y){return?x+y;} //返回三個整數(shù)的和 ??int?add(int?x,int?y,int?z){return?x+y+z;} //返回兩個小數(shù)的和 double add(double?x,double?y){return?x+y;} 注意?。。?/span> ①不同的形參列表 :形參的個數(shù),順序,類型不同 ②方法的重載和權(quán)限修飾符,返回值類型,形參的名字無關(guān)。 ③判斷方法:只看 方法名?。?形參列表(看形參和實(shí)參的類型) 可變個數(shù)形參 格式 :變量的類型 ... 變量名 說明: ? ? ? ? ? ? ? ? ?①可變形參的底層就是一個數(shù)組 ? ? ? ? ? ? ? ? ?②在可變形參的方法中,和可變形參相同類型的數(shù)組的方法不構(gòu)成重載。 ? ? ? ? ? ? ? ? ?③在形參列表中可變形參只能放在最后 ? ? ? ? ? ? ? ? ?④在同一個方法的形參列表中只能有一個可變形參。 ? ? ? ? ? ? ? ? ?⑤ 可變形參的個數(shù)可以是0個1個或多個 方法的參數(shù)傳遞 基本數(shù)據(jù)類型的參數(shù)傳遞 引用數(shù)據(jù)類型的參數(shù)傳遞 方法的參數(shù)傳遞 面向?qū)ο螅悍庋b 為什么要使用封裝性? 在創(chuàng)建對象以后,就可以通過對象名.屬性名這種方式對屬性直接進(jìn)行操作。這種操作對于屬性只有類型和范圍的限制。但是在實(shí)際開發(fā)中我們會有更多的其它的限制條件。而這些限制條件又不能在屬性的聲明處加以限制。我們采取取如下方式 ①使用權(quán)限修飾符對屬性進(jìn)行權(quán)限的限制,那么在類的外部就不能隨意的再調(diào)用類中的屬性 ②提供公共的方法,在方法中可以加以限制其它的條件。然后可以通過該方法給屬性賦值和獲取屬性的值。 ? ? ? ? ? ? ? ? ? 封裝性的體現(xiàn)(狹義上): ①將屬性私有化。(private修飾屬性) ②提供公共的set/get方法。(set方法用來給屬性賦值,get方法用來獲取屬性的值) ? ? ? ? ? ? ? ? ? 封裝性的體現(xiàn)(廣義上): ①可以使用四種權(quán)限修飾符:private,缺省的,protected,public ②四種權(quán)限修飾符可以修飾 :屬性,方法,構(gòu)造器,內(nèi)部類 ③類只能被public和缺省的修飾。 四種訪問權(quán)限修飾符 構(gòu)造方法(構(gòu)造器) 構(gòu)造器的特征 它具有與類相同的名稱 它不聲明返回值類型。(與聲明為void不同) 不能被static、final、synchronized、abstract、native修飾,不能有return語句返回值 構(gòu)造器的作用:創(chuàng)建對象;給對象進(jìn)行初始化 如:Order o = new?Order();????Person p = new?Person(“Peter”,15); 根據(jù)參數(shù)不同,構(gòu)造器可以分為如下兩類: 隱式無參構(gòu)造器(系統(tǒng)默認(rèn)提供) 顯式定義一個或多個構(gòu)造器(無參、有參) 注??意: Java語言中,每個類都至少有一個構(gòu)造器 默認(rèn)構(gòu)造器的修飾符與所屬類的修飾符一致 一旦顯式定義了構(gòu)造器,則系統(tǒng)不再提供默認(rèn)構(gòu)造器 一個類可以創(chuàng)建多個重載的構(gòu)造器 父類的構(gòu)造器不可被子類繼承 構(gòu)造器重載使得對象的創(chuàng)建更加靈活,方便創(chuàng)建各種不同的對象。 給屬性賦值的方法 賦值的位置: ① 默認(rèn)初始化:int a; ② 顯式初始化:int a = 0; ③ 構(gòu)造器中初始化 ④ 通過“對象.屬性“或“對象.方法”的方式賦值 賦值的先后順序: ? ① - ② - ③ - ④ JavaBean:Java語言編寫的可重用組件 定義:是一個普通的Java類,但是符合如下標(biāo)準(zhǔn) ①類是公共的 ②有一個無參的公共的構(gòu)造器 ③有屬性,且有對應(yīng)的get、set方法 UML類圖 ①+?表示?public?類型,?-?表示?private?類型,#表示protected類型 ②方法的寫法:方法的類型(+、-)??方法名(參數(shù)名:參數(shù)類型):返回值類型 this 關(guān)鍵字 this 是什么? ①它在方法內(nèi)部使用,即這個方法所屬對象的引用; ②它在構(gòu)造器內(nèi)部使用,表示該構(gòu)造器正在初始化的對象。 this作用域:this 可以調(diào)用類的屬性、方法和構(gòu)造器 適用情形:當(dāng)在方法內(nèi)需要用到調(diào)用該方法的對象時,就用this。 具體的:我們可以用this來區(qū)分屬性和局部變量。 public?void?setAge(int?age){ ???????????age?=?age;//局部變量 :就近原則(屬性名和局部變量名相同時默認(rèn)調(diào)用的是局部變量) ? ? ? ? ? ?System.out.println("==========="?+?age); } this 調(diào)用構(gòu)造器 |
總結(jié)Summary |
|
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。