




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、18條java基礎首先我們先看關于java中命名的規范,這不是一種硬性規定,就是說你不按照這種規范去 寫,依然能通過編譯,但是從方便閱讀性以及代碼規范性角度考慮,建議遵循這種規范。1 java中的首字母大寫與命名規范:在java屮只有兩個地方會用到大寫的字母做為命名 的第一個字母,一個是類,別一個是靜態變量。如:類test、靜態變量static.name, 如果使用的命名由幾個英文組成,則第二個開始的每個詞使用大寫隔開,女山 usergrouptd> studentnameo切忌:在java中命名不能用中文與拼音,以及只有類名 與靜態變量開頭的字母是使用大寫,其他的命名如方法名、變量名一
2、律開頭使用小寫。 說明:這里命名的規范中,聲明類和靜態變量的時候,首字母一般大寫女u:類 class example靜態變量:static int variable;而在聲明無論是方法還是類以及其他時,第二個單詞的首字母一般大寫如1:聲明類和方法時:class baseclassvoid firstmethod()1聲明變量時: int examplevariable = 0;當我們聲明任意元素時,都要注意,不要使用中文或者拼音,而應該使用能表達其含義 的英文,這樣當我們閱讀時,看到名稱就能知道其作用,或者是用容易理解的縮寫方式, 或者是命名時添加注釋。如:這里我要聲明一個變量來儲存學生的年齡
3、,那我應該去怎么寫呢?int stuage = 0;這樣當其他人閱讀代碼時,就能清楚的知道這個變量的作用。2 包(package):java里而的類太多了,你寫,我寫,大家寫,我們用的類名相同,不可能放 在一起,怎么辦?把它們放在不同的包里面,就不會沖突了,包名為網址倒過來寫,請不 要使用拼音來命名包名,以及包名不要過長(包的結構就是程序框架的結構).這里我們先說明一下包的作用:> 包可以把類組合成類似于一個個小的單元,如同我們把文件放在不同的文件夾中, 這樣方便我們去查找。> 有助于避免命名沖突。因為java中命名不能重復,所以當我們一個程序編寫到比 較大規模時,類或者方法的名稱
4、就很難決定,對能需要相同的名稱,這樣我們就可 以打包,放入不同的包內,這樣就可以避免命名沖突。> 包可以保護類,數據和方法。我們可以通過訪問修飾符去定義類,這樣包外的類就 可能不能訪問該類,這樣就達到了保護的效果而這里所說的命名,主要是指我們在開發b/s架構時的一種命名方法。但是我們應該養 成這種良好的命名習慣。例如:aptech. com我們去打包應該寫成:package com. aptech;然后看下對象,方法,類這三個java屮的重要概念。3 對象:對象是存在的具體實體,就是按照類(汽車設計圖紙),做出來的真正的看得見摸得 著的汽車(注:聲明一個對象就像一個變量名,如果使用了 n
5、ew關鍵字就已在內存中 分配了地址)說到對象,就不能不說類。首先呢,類的定義是具有相同屬性和共同行為的一組對象的集合。這里所說的屬性和行 為實際就是參數和方法。如同我們定義一個汽車類,這個吋候呢,類的屬性就是汽車都 具有的那些公共的屬性,例如汽車有發動機,車門,輪胎等等,但是對于這個類的對象 的屬性并不都是一樣,它們都擁有自己特有的值。例如寶馬,奔馳都屬于汽車類的對象, 但是寶馬有自己的發動機,車門,輪胎等等,奔馳也有自己的發動機,車門,輪胎等等, 這個時候寶馬和奔馳作為汽車這個類的對象,它們具有發動機,車門,輪胎這些類的屬 性,但是擁有自己的值。而類的行為呢,就是類里面所定義的方法,可以接受
6、對象的參 數,然后去具體實現。實體化一個對象使用關鍵字new,表明在內存中為對象分配了內 存空間。例如:定義一個類,用來計算而積class areaint width; /寬 int length; /長/定義方法去得到面積void areavalue(int width, int length)int total area;totalarea = width*length;system, out. println(*ffi積為:”+totalarea);class areatestpublic static void main(string args)area areaobj = new a
7、rea () ; /創建area類的對象并實例化 areaobj. areavalue(15, 20) ;/調用area類中的areavalue方法并給予參數,計算面積我們通過上面這個程序就可以了解對彖,類,方法具體的作用.類在這里提供的是一個模板,如同上面的area類,這里只提供給一個計算面積的方 法,用長乘寬,而如果我們要計算的是正方形的面積,長和寬一致,同樣也可以用這個方法 得到面積。然后我們通過area areaobj = new area();去具體創建和實體化一個對象areaobj,這個對 彖擁有width和length這樣一個公共屬性,但是它有它自己的值(15,20),然后去調用
8、具 體的行為 計算血積areavalue(int width,int length)這個方法,在這里areavalue這個方 法作為類的行為,意思是area類的對象都具有得到面積這個方法,但是長方形有長方 形的具體實現,正方形有正方形的具體實現。接下來我們來看一下java屮兒種修飾符。4 靜態變量與方法(static):所謂的靜態變量就是在定義時加一個static的關鍵字,被定 義為靜態的方法與變量是唯一的,也就是說不管這個類有多少個實例化對象它們都共用 這個類中的靜態變量或方法,這也是為什么使用靜態變量或方法是用類名來直接調用的 原因,而非靜態變量或方法等于每個實例化對象都有自己的方法與變量
9、,這樣就會互不 影響。舉個例子:老師相當于靜態的,因為被所有學員所共有,而學員就是非靜態的, 因為每個學員都是獨立的。我們首先來看一個例子:class example static int a = 10;靜態變量static int value(int a)靜態方法return a*a;staticf靜態代碼塊system.out.prinllnc's是首先被執行的靜態塊! ”);)class examtestpublic static void main(slring args) int x = example.value(example.a); system.out.println
10、c* 輸出結果為:"+x);我們會看到這個程序里有兒個地方和我們常見的不同,首先,我們聲明了一個靜態變量 和一個靜態方法和一段靜態代碼塊。從這里我們可以得知,static關鍵字可以用在方法, 變量甚至代碼塊,而被定義為靜態的語句會最先執行,所以上面這個程序的輸出結果是 先輸岀:“這是首先被執行的靜態塊”這一段語句,然后再輸出結果。其次,我們看到 我們并沒有創建example類的對象并實體化它,但是我們可以去調用example里面的 靜態方法value,所以我們可以得知聲明為static的方法可以不用創建其類的實例就可以 被調用,以及可以直接通過類名稱調用聲明為靜態的變量(exampl
11、e.a),所以我們常用的 main方法可以不用實體化就可以直接調用。靜態方法只能調用其他的靜態方法,只能 訪問靜態數據,并且不能使用this和super關鍵字。例如:class teststatic void b()聲明一個靜態方法system.out.printlnc'輸出示范!");class example public static void main(string args) test.bo;沒有實例化對象去直接調用靜態方法5 final類:當一個類定義為final后,它將不能被其他類所繼承,在定義靜態變量時, -般final和static共同使用,這樣這個靜態變量
12、就是不可變的。final修飾符可應用于類,方法和變量。而我們一般用final去修飾一個變量時,它的 值就不可更改,我們通常可以認為final變量就像是一個常量。例如:class ex amp 1 e final int a = 5;/聲明 final 變量 aint b = 10;void add() system, out. printin("輸出結果為:"+(a+b);publie static void main(string args)ri.example exam = now example();exam add (); exam b 二 11; exam add
13、 (); exam. a = 6; exam add ();輸出結果為15/這里我們可以去改變變量b的值輸出結果為16;/這里會報錯,因為a是final變量,值無法被修改final用于對象時,則對象的引用不可改變,但是值可以更改。 例如:class box int height;box (int h) height 二 h;public static void main(string args)final box boxobj = new box(25) ;/聲明一個 final 對象/*如果我們再用boxobj = new box(32);就會出錯!但是我們可以去改變它 的值*/boxobj
14、. height = 32;而當final用于類,則表示它無法被繼承。而final用于方法時,意味著方法不能重寫。6 抽象:分析問題時抽出重要的因素,忽略掉不重要的(我們每天都在抽象身邊的事物, 如:判斷一個人是好人還是壞人)。抽象能簡化程序的復雜性,讓每個人都只看到自己想要看到的部分。既方便了使用也避 免了誤操作。例如我們寫一個給一列數字排序的程序。作為用戶來說,他只關心排序的結果,而不關 心你具體以什么樣的方法去完成排序過程,這樣我們就抽象了排序的過程。7 抽象類(abstract class):前面加了 abstract關鍵字修飾的類就是抽象類,抽象類不能生成 實例(不能使用new關鍵字
15、)只能拿來繼承,抽彖類中一般包含抽彖方法(作為債務 產生),就是沒有具體實現的方法體(只做標示),一個類屮如果定義了一個抽象方法這 個類也就自動變成抽彖類。例如:abstract class example聲明一個抽象類public void a()聲明一個方法system.out.println("a");public static void main(string args)example test = new example();/這里會報錯,因為抽象類方法無法生成實體化對象8 抽象方法.前面加了 abstract關鍵字修飾,沒有方法體.也就是方法什么事也沒干,像個空
16、 頭支票(產生債務方法抽象方法的聲明是在前面加上abstract關鍵字,并且沒有方法體。如:abstract example /如果有一個抽象方法存在,就必須聲明為抽象類abstract void a();/聲明一個抽彖方法,沒有方法體9 接口 (interface):接口可以理解為純抽象的類,它的每個方法都是未實現的,它就像 一個產品的說明書(產生債務方法之一)。當一個抽象類里面全部是抽象方法的時候,我們就可以把它看做是一個接口,當然使用 方法有區別。接口有兒個需要注意的地方:a 接h中的所有方法都必須是10封裝(encapsulation )將重要的信息隱藏起來,或者將不需要使用者知道的很
17、麻煩的 信息全部藏起來,就像全自動洗衣機,只提供給用戶一個簡單的按鈕,把里面具體的實現 藏起來,使用戶感覺操作很簡單(封裝有兩種方法接口與抽彖類也叫基類,其川接口的 封裝效果最好)。11父債子還:這是java中關于方法重寫的一種硬性規定,就像欠賬還錢一樣。在這里有 兩種方法會產生債務,一個是抽象方法,另一個是接口中的方法,大家會發現這兩種都 有一個特性:它們定義的方法體都是空的,這就是產生了債務,所謂的償還債務只是繼 承這個抽象類的子類或實現了某個接口的類,它們必須要重寫這些空的方法體,否則編 譯器會報錯。在這里只有定義為抽象類才不用還債,空的方法是一定要重寫的,就像你 不還錢,你的兒子也要還
18、錢,你兒子不還,你的孫子就要還,一直到錢還清了,這個時 候你的子類才不用強制重寫任何方法。這里來舉例說明債務問題,封裝和接口,以及抽象類和抽象方法。例如:有個抽彖類a,它里面有a,b,c三個抽彖方法,然后有一個d方法去控制a, b, c的流程,然后我們去聲明一個b類去繼承a類,此時,b類必須重寫它的基類a類中 聲明的a,b,c三個抽象方法,否則會報錯;或者將b類也聲明為抽象類,這樣可以不用 去重寫a, b, c三個抽象方法。但b類的子類依然要重寫這些方法,除非b類的子類也聲 明為抽象類,一直循環到有一個子類重寫了這些方法才行。(這就是債務問題。)然后再 去聲明一個類c去創建b類的對象并實體化,
19、這個時候我們會發現可以用調用a, b, c, d 四種方法,而顯然我們只需要調用d方法。那這個時候我們就要去聲明一個接口去完成 封裝,讓b類的對象只能調用d方法,能達到較好的封裝效果。具體例子如下:先聲明一個抽象類aabstract public class a聲明一個抽象類a/聲明三個抽象方法a, b, c/聲明一個方法來控制流程public abstract void a() public abstract void b() public abstract void c()public void d() c();b();a();然后聲明一個接口去過濾a, b, c方法interface i
20、nterf/聲明一個 interf 接口public void d();然后聲明一個類繼承aclass b extends a implements interf'聲明一個b類去繼承a類并實現接/口,此接口最好被控制流程的那個類(a類)去實現 public void a() /重寫 a, b, c 方法system, out. printin (ub.an)public void b() system, out. print in ("b.b”) public void c()system, out. println("b.c”)再聲明一個包含main方法的類去具體
21、實現 class testpublic static void main(string args)interf test = new b(); test. d();創建i個b類的對象test去實現interf接口 /此時只能調用d方法輸出結果是:b.cb.bb. a這樣就完成了對a類的封裝,我們只能去調用d方法,所以就會遵循所制定的流程,先 運行c方法,再運行b方法,最后運行3方法。這實際上也是父類(這里指a類)控制 流程,子類(b類)具體實現。下面來看一下java中四種訪問修飾符12 java的四種類型:12.1 public :公共類型,在繼承時,父類定義為公共類型的方法或變量子類可以全
22、部繼承過去,而且別的類可以隨意調用公共類型的方法和變量。12.2 private:私用類型,在繼承時,父類定義為私用類型的方法或變量子類不能繼 承,而且別的類不可調用私有類型的方法和變量。12.3 protected:保護類型,在繼承時,父類定義為保護類型的方法或變量子類可以 全部繼承過去,只有它的子類可以在不同的包調用它的方法(與default唯一不 同的地方,default不可以),在一個包下面可以全部被調用。12.4 default:默認類型,不加類型關鍵字會自動變成默認類型,繼承時父類定義為默 認類型的方法或變量子類會全部繼承過去,但只有在一個包下面的類才能調用。使用訪問修飾符可以設置
23、方法或者變量的訪問權限,防止某些方法或者變量被調用,從 而讓程序更加穩定。我們可以用一個表格來表示:privatedefauitprotectedpubli c同一個類可訪問可訪問可訪問可訪問同一個包內的類不可訪問可訪問可訪問可訪問不同包內的類不可訪問不可訪問可訪問(須為子類)可訪問不同包內且不是子類不可訪問不可訪問不可訪問可訪問13不能實例化:以下情況定義的類不可實例化(不能使用new關鍵字)只能拿來繼承。13.1抽象類13.2構造函數聲明為private (私有)抽象類不能實體化,我們前血已經說明過,那下血我們來看一個構造函數聲明為private時也不能私有化的例子。聲明一個類/構造函數設
24、置為private/方法聲明一個測試類class testexprivate testexo public void method() system, out. printin ("輸出示范!");public class testpublic static void main(string args)testex test = new testexo ;/試圖去創建一個testex的對象并實體化它,但是失敗test, method ();/不能實現這實際上是由于private這個訪問修飾符的權限設置所決定的,因為聲明為private 的方法無法被不是同一個類的對象所調用,
25、而構造函數是只要使用關鍵字new創建類的 實例時就會被調用的方法。所以,當我們把一個構造函數聲明為private時就意味著你 不能用new關鍵字去創建它的對彖并實體化它。14 oo三大特性:繼承、封裝、多態(主要用于搭建程序框架,以此來提高代碼的重用性 與解藕業務邏輯)。這些特性實際上都是為了方便我們設計程序,并能更好的體現java的健壯性,安全性 和血向對象的特性。血向對象的語言是把任何東西都作為對象來處理,重點集中在數據 和程序中對數據操作的方法上。15繼承(extends):子類可以繼承父類非私有的屬性和方法,就像兒子繼承老爸的財產, 兒子可以少奮斗二十年。如果有兩個類或多或少的具有一組
26、相同的屬性和方法,我們就可以用繼承的方式去處理 它們,這樣可以確保相同部分的屈性和方法代碼只編寫一次,從而減少編碼量,提高了 代碼的可重用性。一般被繼承的類稱為父類,或者是基類,超類;而繼承類稱為子類, 或者是派生類。下面我們用程序來解釋一下:class fatherclass/聲明一個父類public void fathermethod() /父類方法system, out. println(z,我是父類! !);class sonclass extends fatherclass /*聲明一個子類去繼承父類,注意extends關鍵字*/子類方法/測試類創建一個子類的對象并實體化/可以去調用
27、父類中的方法也可以調用子類中自己的方法public void sonmethod()system, out. print in (z/我是子類!!”);class testpublic static void main(string args) sonclass son = new sonclass();son. fathermethod ();son. sonmethod ();最后這個程序輸出結果是:我是父類!我是子類!通過這個程序我們可以理解繼承的使用以及繼承的作用,注意一個子類只能有一個父 類,就如同一個兒子只可能有一個父親一樣,但是一個父類可以有多個子類,然后子類 也可以擁有自己的子
28、類,這樣循環下去。同樣是剛才這個例子,如果我們這樣寫:class fatherclasspublic void fathermethod()system, out. printin (,z我是父類! ! “);class sonclass extends fatherclasspublic void sonmothod()system, out. printin (,z我是子類! !");class testpublic static void main(string args)fatherclass father = new fatherclass() ; /這里聲明一個父類的對象
29、并實體化 father, fathermethod();/調用父類屮的方法,可以調用father, sonmethod() ;/調用子類中的方法,無法調用從上面這個程序我們可以得知,父類不能調用子類中的方法,因為它無法得知子類屮定 義的方法。有時我們會看到這樣一種寫法,假如b是a的子類,然后:a obj = new b();這樣是聲明了一個對a類的引用并初始化指向其子類b類的一個對象,而我們只能用 obj對象去調用a類中己經存在的方法,而不能去調用b類中有而a類中沒有的方法。16多(polymorphism):多態性是指“多種形式”也叫“動態綁定”它使用不同的子類來 執行不同的操作,前提是子類
30、中相關方法名必須是一樣,這樣通過new 個不同的子類, 通過接口或者父類就可以做到只修改一行代碼而做到實現不同的功能,因為對于子類來 講方法名大家都是一樣的,就好像“畫圖”這個方法,每個不同形狀的圖形都有,new 一個圓進去就是畫圓,new 個正方型進去就是畫正方型,這是因為在這些不同形狀的 圖屮,他們都有一個一樣的方法叫“畫圖”,不同形狀的圖形在自己的"畫圖”方法屮 實現自己的特色,這樣使用動態綁定,只需要修改很少的代碼就可以做到new什么就畫 什么,這些就是多態。多態就是指多種形式,如杲碳元素,它有兩種形態一一金剛石和石墨。而造成這種形態 的差異的原因是什么呢,是因為它的溫度不同
31、,溫度在這個地方就如同我們給予方法的 參數,參數不同,帶來的結果就不同,放到編程里來說就是:有一個父類碳元素,然后 里面有一個方法去給出它的形態,而它有兩個子類,一個是金剛石,一個是石墨,然后 它們繼承了父類碳元素的形態方法,但是它們可能需要重寫父類的形態方法,最后去實 現。而多態一般是通過重寫和重載去完成的。下面我們來看下重寫。17重寫:子類繼承父類,子類和父類的方法具有相同的名稱和類型,但子類干的事和父類 干的事不一樣。就像你和你老爸都有個方法叫一工作,但工作的內容不一樣,你搞軟件開 發,你老爸是醫生./聲明一個父類 聲明一個父類方法聲明一個子類去繼承父類/重寫父類方法,接受參數一樣下面我
32、們用一個實例來解釋下重寫class fatherclasspublic void fathermethod() system, out. print in (,z 這是父類中的方法! !"); class sonclass extends fatherclasspublic void fathermethod () system, out. println(z/這是在子類中被重寫的方法!");/方法體中的內容不一樣class testpublic static void main(string args) /創建一個子類的對象并實例化/調用方法sonclass test =
33、 new sonclass(); test, fathermethod();輸出結果是:這是在子類中被重寫的方法!從上面這個程序我們可以看到重寫方法是方法名一樣,接受參數的數量和類型一樣,但 是方法體可以不一樣。并且子類去調用重寫方法時,總是調用出現在子類屮的方法,而 父類中的方法被隱藏,所以輸出結果會是子類中的方法體中的語句。而如果我們要去在子類屮調用父類的方法,就要使用super關鍵字,如果我們把上述程序中子類寫成: class sonclass extends fatherclass publ ic void fathermethodo super.fathermethod(); 如果這
34、樣,輸出結果就會是父類中fathermethod()方法中的語句:這是在父類中的方法!18重載:當多個方法具有相同的名字而含有不同的參數個數或類型時,便發生重載.重載是指當兩個方法的方法名相同,但是參數類型或個數不同,返冋類型可能不同的情 況。我們拿上面那個例子來說明下:class fatherclasspublic void fathermethod()system, out. print in ("這是父類中的方法! “);class sonclass extends fatherclasspublic void fathermethod(int x) system, out.
35、print in (,z 這是被重載的方法!我有一個參數 x! !,z+x) ;/fathermethod 方法被重載class testpublic static void main(string args)sonclass test = new sonclass();test. fathermethod(5);我們會發現這個程序和上而的有些不同,最大區別在于子類|' fathermethod方法能接 受一個int型的參數,而父類中不能,所以此時就形成了重載,輸出結果就是:這是被重載的方法!我有一個參數5!而重載可以減少代碼的冗余,實現java多態的特效。但是當我們使用重載時,一定要
36、 注意你調用的方法是哪一個方法。如下面這個例子:class fatherclasspublic void fathermcthod()system, out. printin ("這是父類中的方法!");class sonclass extends fatherclasspubl ic void fathermcthod(int x) /重載 fathermethod 方法,有一個 int 參數system, out. printlnc這是第一個被重載的方法!我有一個參數x:"+x);public void fathermethod (double x, int
37、y) /重載,并有兩個參數system, out. printlnc這是第二個被重載的方法!我有兩個參數x:"+x+"和y:"+y);class testpublic static void main(string args)sonclass test = new sonclass ();test, fathermethod (5) ;/調用第一個被重載的方法test. fathermethod(5, 10) ;/調用第二個被重載的方法test, fathermethod (5. 5, 15) ;/調用第二個被重載的方法我們會發現這個程序和前而我們看到的那個又有些不同,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年K2學校STEM課程實施效果對學生未來全球視野拓展的深化評估報告
- 留置胃管護理質控2025
- 2025屆高考物理大一輪復習課件 第三章 第13課時 動力學中的連接體和臨界、極值問題
- DeepSeek大模型賦能企業數字化轉型建設方案
- AI大模型賦能數字農業農村信息化建設方案
- 南湖社區衛生服務中心消除艾梅乙母嬰傳播反歧視工作培訓試題及答案
- 電針治療腹腔鏡胃腸道腫瘤術后胃腸功能障礙的臨床觀察
- 憲法黨章試題及答案
- 物理因子試題及答案
- 明框玻璃壓板間距規范技術解析
- 2024年江蘇省知識產權競賽參考試題庫(含答案)
- 危化品駕駛員押運員安全培訓
- 肝硬化行TIPS術后整體護理查房
- 【MOOC】《模擬電子線路A》(南京郵電大學)章節中國大學慕課答案
- EB病毒感染-課件
- 水工隧洞施工技術規范
- 盤山施工便道施工方案
- 執行立案申請書模版
- 全國園地、林地、草地分等定級數據庫規范1123
- 動詞不規則變化表
- 軟件采購意向協議書范本
評論
0/150
提交評論