瘋狂java第五章

知識點記錄

1.類的定義
.被static修飾的變量或者方法是屬於類的,所有也叫做類變量和類方法。
.非static修飾的變量或者方法是屬於類的實例,也就是new的具體對象,所以也叫做實例變量和實例方法。
2.對象的應用this
.this在方法中使用
this可以代表任何對象,當this出現在某個方法體中時,它所代表的對象是不確定的,但它的類型是確定的:它所代表的只能是當前類的實例;只有當這個方法被調用時,它所代表的對象才能確定下來:誰在調用這個方法,this就代表誰,其中this可以省略。
.this在構造器中使用
如果在構造器中有個一個局部變量與成員變量同名,又必須在構造器中使用這個成員變量,則必須使用this前綴,若沒有同名的,則可以省略this前綴。
3.類的方法
.類的方法參數傳遞是值傳遞,若參數是基本類型,則傳遞給方法前,會先在棧中複製一份,再將拷貝的數據傳遞給方法內部,方法內部怎麼改變數據,也不影響拷貝前的數據,若是引用類型,也先是在棧中拷貝一份,但是拷貝的是對象的引用地址,這就相當於Person p1 = new Person; Person p2 = p1 其結果就是p1或者p2相等,它們都是同一個對象的地址引用,通過p1或者p2改變對象的值效果相同;也就說方法外或者方法中都是使用同一個對象數據。
4.成員變量和局部變量
.通過new一個實例可以訪問類變量,若設置爲2,那麼new一個其他實例訪問該類變量也將得到2,這是因爲類變量是屬於類的,他的生命週期就是該類在程序中的生命週期一樣。
.方法中:形參的作用於是真個方法執行週期內有效;局部變量,它的作用域從定義該變量的地方生效到着整個方法結束;局部代碼塊,它的作用域從定義該代碼塊地方生效到代碼塊結束。
5.多態
.java引用變量有兩個類型,一種是編譯時類型,一種是運行時類型,編譯時類型由聲明該變量類型決定,運行時類型由實際賦給該變量的對象決定。如果編譯時類型與運行時類型不一樣,就是多態了。
.Furit a = new Apple() 若Furit 有一個成員變量 int i = 1,一個方法eat();同樣,Apple有一個成員變量int i = 7,重寫父類方法eat(),則編譯時a的類型是Apple的父類類型,但是運行時卻表現Apple的行爲特徵,也就是a.eat()會執行Apple類中的方法,但是a.i輸出的是父類中的值,這是因爲成員變量不具備多態性。
6.代碼的複用
.什麼時候使用繼承?什麼時候使用組合?這個沒有明確的定義,但是大部分時間我們可以根據其現實意義區分並加以設計程序
.繼承表達一種"is-a"的關係,如胳膊和人
.組合表達一種"“has -a”的關係,如學生會和學生

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章