疯狂java讲义
封裝:
- 封裝:將對象狀態(tài)信息隱藏在對象內(nèi)部,不允許外部程序直接訪問對象內(nèi)部信息,而是用類所提供的方法訪問和操作。
- 訪問控制符:private(當(dāng)前類訪問權(quán)) ,protected(子類訪問),public(公共訪問),default(包訪問)
- set(),get()
- 構(gòu)造器重載,名字相同 ,形參不同。
- 構(gòu)造器中調(diào)用另一個(gè)構(gòu)造器用this();必須出現(xiàn)在構(gòu)造器第一行。
- 方法重載:名字相同,形參不同。與返回值,修飾符無關(guān)。
繼承:
- 繼承:每個(gè)子類只有一個(gè)直接父類,extends。
- 默認(rèn)繼承java.lang.Object,是所有類的父類。
- 子類可以重寫父類方法。方法重寫。兩同兩小一大:方法名同,形參同,返回值小,異常小,子類訪問權(quán)限大。
- 子類覆蓋后子類對象不可調(diào)用父類方法,但可在子類方法中調(diào)用,super(實(shí)例方法),父類類名(類方法)來調(diào)用。
- 如果父類private,那方法對子類隱藏,子類無法調(diào)用,無法重寫。
- super:也可用來訪問父類被覆蓋的實(shí)例變量。
- 會為所有實(shí)例變量分配內(nèi)存。(被覆蓋了也分配)
- 子類也可以用super調(diào)用父類構(gòu)造器。
- 子類沒有super調(diào)用父類構(gòu)造器,系統(tǒng)會在執(zhí)行子類構(gòu)造器之前調(diào)用父類構(gòu)造器。
- 父類構(gòu)造器在子類構(gòu)造器之前進(jìn)行,還會上溯,最先執(zhí)行的總是java.lang.Object構(gòu)造器。
繼承注意點(diǎn):子類可以訪問父類成員變量和方法,不安全
- 盡量隱藏父類內(nèi)部數(shù)據(jù),private
- 不讓子類隨便訪問,修改父類方法,不能訪問private.如果希望訪問不讓重寫,用final public,可以被子類重寫不能被外部訪問用protected.
- 盡量不在父類構(gòu)造器中調(diào)用被子類重寫的方法。
多態(tài):編譯時(shí)類型和運(yùn)行時(shí)類型不同,相同類型的變量調(diào)用同一個(gè)方法呈現(xiàn)多種不同行為特征。
- 編譯時(shí)類型:聲明該變量時(shí)的類型。
- 運(yùn)行時(shí)類型:實(shí)際賦給該變量的對象。
- 子類對象賦給父類引用變量——向上轉(zhuǎn)型,系統(tǒng)自動完成。
- 父類對象賦給子類引用變量——強(qiáng)制類型轉(zhuǎn)換,instanceof判斷更安全,否則ClassCastException
- 最終類不能被繼承:1.用final修飾類,2.用private修飾類的所有構(gòu)造器,子類無法調(diào)用,就無法繼承。
- 組合復(fù)用。
初始化塊:
- 可有修飾符static。初始化塊按順序進(jìn)行。
- 創(chuàng)建對象時(shí),先調(diào)用類里的初始化塊再執(zhí)行構(gòu)造器。
- 初始化塊是構(gòu)造器補(bǔ)充,在構(gòu)造器前執(zhí)行。
- 但是不能接受任何參數(shù),對所有對象初始化相同。
?
?
- ==和equals:引用變量用==時(shí),只有他們指向同一個(gè)對象才true。==兩邊沒有父子關(guān)系的兩個(gè)對象會編譯錯(cuò)誤。
- “hello”直接量存在常量池,new String ("hello")Jvm會用常量池保存"hello",在調(diào)用String類構(gòu)造器創(chuàng)建一個(gè)新對象,保存在堆內(nèi)存中。所以不相等。
- 值相等用str1.equals(str2);
?
?
- 類成員,類方法,即使實(shí)例是Null也可以訪問類成員,null訪問實(shí)例成員會引發(fā)NullPointerException。
- 靜態(tài)初始化塊也是類成員,類初始化時(shí)調(diào)用,之后不再執(zhí)行,
- 類成員不能訪問實(shí)例變量。
?
- 單例類:一個(gè)類只能創(chuàng)建一個(gè)實(shí)例。構(gòu)造器private。提供一個(gè)public 方法作為訪問點(diǎn),用于創(chuàng)建對象,且是public static.且類還必須緩存已經(jīng)創(chuàng)建的對象。用一個(gè)成員變量來保存曾創(chuàng)建的對象,要被靜態(tài)方法訪問,必須也static.
- 只能創(chuàng)建一個(gè)對象,再多引用所指的都相等。
- final:
- 修飾變量,該變量一旦有初始值就不可改變,final修飾的成員變量必須顯示指定初始值,系統(tǒng)不會對final成員隱形初始化,final修飾局部變量,修飾形參
- final修飾引用變量,final保證指向的對象不變,但對象內(nèi)容可以改變。
- final修飾變量,宏定義,定義final時(shí)就為變量指定初始值,在編譯時(shí)確定,final變量實(shí)際是宏變量。
- 修飾方法,不可被子類重寫。但可以被類內(nèi)重載
- 修飾類:不可以有子類,不可被繼承、
?
- 不可變類:創(chuàng)建該類實(shí)例后,該實(shí)例實(shí)例變量不可改變。
- 規(guī)則:1.用private和final修飾該類成員變量? ?2.提供帶參數(shù)構(gòu)造器,傳入?yún)?shù)來初始化。? 3.只為該類成員提供getter().不能setter()
?抽象:
- 抽象方法,抽象類:abstract。
- 抽象方法不能有方法體,抽象類不能被實(shí)例化,不能new.這個(gè)類只能被繼承。
- 抽象方法沒有方法體,必須被子類重寫。
- final與abstract不能同時(shí)用。static和abstract也不能同時(shí)修飾同個(gè)方法。
- 抽象類只定義某些方法,把不能實(shí)現(xiàn)的部分抽象成抽象方法,留給子類實(shí)現(xiàn)。
?
轉(zhuǎn)載于:https://www.cnblogs.com/Aozorazy/p/10444636.html
總結(jié)
- 上一篇: jQuery 购物车
- 下一篇: 二分插入排序(c语言)