-
面向?qū)ο笏枷?/h2>
- 面向?qū)ο蠡靖攀?br> 面向?qū)ο笫腔诿嫦蜻^(guò)程的編程思想。
- 面向?qū)ο螅簭?qiáng)調(diào)的是每一個(gè)功能的步驟
- 面向?qū)ο螅簭?qiáng)調(diào)的是對(duì)象,然后由對(duì)象去調(diào)用功能。
-
面向?qū)ο蟮乃枷胩攸c(diǎn)
- 是一種更符合我們思想習(xí)慣的思想侍筛。
- 可以將復(fù)雜的事情簡(jiǎn)單化
- 將我們從執(zhí)行者變成了指揮者
-
面向?qū)ο箝_(kāi)發(fā)
- 就是不斷的創(chuàng)建對(duì)象髓绽,使用對(duì)象锅锨,指揮對(duì)象做事叽赊。
-
面向?qū)ο笤O(shè)計(jì)
- 其實(shí)就是在管理和維護(hù)對(duì)象之間的關(guān)系。
-
面向?qū)ο筇卣?/h2>
- 封裝
- 繼承
- 多態(tài)
-
類(lèi)
是一組相關(guān)的屬性和行為的集合必搞,是一個(gè)抽象的概念
-
對(duì)象
是該類(lèi)事物的具體體現(xiàn)必指。
-
如何使用
創(chuàng)建對(duì)象使用
如何創(chuàng)建對(duì)象呢?
類(lèi)名 對(duì)象名 = new 類(lèi)名()恕洲;
-
成員變量和局部變量的區(qū)別
- 成員變量在類(lèi)中方法外塔橡。
- 局部變量在方法定義中或者方法聲明上。
- 成員變量在堆內(nèi)存
- 局部變量在棧內(nèi)存
- 成員變量隨著對(duì)象的創(chuàng)建而存在霜第,隨著對(duì)象的消失而消失
- 局部變量隨著方法的調(diào)用而存在葛家,隨著方法的調(diào)用完畢而消失。
- 成員變量:有默認(rèn)初始化值
- 局部變量:沒(méi)有默認(rèn)初始化值泌类,必須定義癞谒,賦值,然后才能使用刃榨。
- 局部變量名稱(chēng)可以和成員變量一樣弹砚,在方法中使用的時(shí)候,采用的是就近原則枢希。
-
匿名對(duì)象
- 就是沒(méi)有名字的對(duì)象桌吃。
new Student().show(); - 匿名對(duì)象作為實(shí)際對(duì)象參數(shù)傳遞。
- 就是沒(méi)有名字的對(duì)象桌吃。
-
私有變量
- private:私有的苞轿,可以修飾成員變量和成員方法茅诱。
- 被private修飾的成員只能在本類(lèi)中訪(fǎng)問(wèn)。
- 這就是封裝
-
封裝
- 隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié)搬卒,僅對(duì)外提供公共訪(fǎng)問(wèn)方式让簿。
- 隱藏實(shí)現(xiàn)細(xì)節(jié),提供公共的訪(fǎng)問(wèn)方式
- 提高代碼的復(fù)用性
- 提高安全性
- 原則
將不需要對(duì)外提供的內(nèi)容隱藏起來(lái)秀睛。
把屬性隱藏,提供公共方法對(duì)其訪(fǎng)問(wèn)莲祸。
-
static(可以修飾成員變量蹂安,還可以修飾成員方法)
- static的特點(diǎn)
隨著類(lèi)的加載而加載
優(yōu)先于對(duì)象而存在
被類(lèi)的所有對(duì)象共享 列如:班級(jí)學(xué)生共用一個(gè)班級(jí)編號(hào)。 - 可以通過(guò)類(lèi)名調(diào)用锐帜,也可以用對(duì)象名調(diào)用田盈。
- 靜態(tài)方法只能訪(fǎng)問(wèn)靜態(tài)的成員變量和靜態(tài)的成員方法。
- static的特點(diǎn)
-
代碼塊
- 局部代碼塊
局部位置缴阎,用于限定變量的生命周期允瞧。 - 構(gòu)造代碼塊
在類(lèi)中的成員位置,用{}括起來(lái)的代碼,每次調(diào)用構(gòu)造方法執(zhí)行前述暂,都會(huì)先執(zhí)行構(gòu)造代碼塊 - 靜態(tài)代碼塊
在類(lèi)中的成員位置痹升,用{}括起來(lái)的代碼,只不過(guò)它用static修飾了畦韭。
只會(huì)隨著類(lèi)加載一次疼蛾,重復(fù)加載不會(huì)出現(xiàn)。
執(zhí)行順序
靜態(tài)代碼塊>構(gòu)造代碼塊>構(gòu)造方法
- 局部代碼塊
-
繼承的概述
- 多個(gè)類(lèi)中存在相同屬性的行為時(shí)艺配,將這些內(nèi)容抽取到單獨(dú)一個(gè)類(lèi)中察郁,那么多個(gè)類(lèi)無(wú)需再定義這些屬性和行為,只要繼承那個(gè)類(lèi)即可转唉。
- 通過(guò)extend關(guān)鍵字可以實(shí)現(xiàn)類(lèi)與類(lèi)的繼承
class 子類(lèi)名 extends 父類(lèi)名{} - 單獨(dú)的這個(gè)類(lèi)稱(chēng)為父類(lèi)皮钠,基類(lèi)或超類(lèi),這多個(gè)類(lèi)可以稱(chēng)為子類(lèi)或者派生類(lèi)
- 有了繼承以后赠法,我們定義一個(gè)的時(shí)候麦轰,可以在一個(gè)已經(jīng)存在的類(lèi)的基礎(chǔ)上,還可以定義自己的新成員期虾。
- 好處
提高了代碼的復(fù)用性
提高了代碼的維護(hù)性
類(lèi)與類(lèi)之間產(chǎn)生了關(guān)系原朝。
-
java中繼承的特點(diǎn):
- Java中支持單繼承,不支持多繼承
列如class Son extends Father,Mother是錯(cuò)誤的镶苞。 - java支持多層繼承(繼承體系)
- Java中支持單繼承,不支持多繼承
-
繼承的注意事項(xiàng)
- 子類(lèi)只能繼承父類(lèi)所有非私有的成員
- 子類(lèi)不能繼承父類(lèi)的構(gòu)造方法喳坠,但是可以通過(guò)super關(guān)鍵字去訪(fǎng)問(wèn)父類(lèi)構(gòu)造方法
- 不要為了部分功能而去繼承
-
繼承和構(gòu)造方法的關(guān)系
- 子類(lèi)中所有構(gòu)造方法默認(rèn)都會(huì)訪(fǎng)問(wèn)父類(lèi)中空參數(shù)的構(gòu)造方法。
- 子類(lèi)中每個(gè)構(gòu)造方法默認(rèn)都是super()茂蚓;開(kāi)頭的
-
繼承中的super和this
- 子類(lèi)可以通過(guò)super去顯示調(diào)用父類(lèi)其他的帶參的構(gòu)造方法
- 子類(lèi)通過(guò)this調(diào)用本類(lèi)的其他構(gòu)造方法
- 注意:super和this必須出現(xiàn)在方法的第一條語(yǔ)句壕鹉。
-
方法重寫(xiě)
- 子類(lèi)中出現(xiàn)了和父類(lèi)一摸一樣的方法聲明,也被稱(chēng)為方法覆蓋聋涨,方法重寫(xiě)
- 使用特點(diǎn):
如果方法名不同晾浴, 有就調(diào)用對(duì)應(yīng)的方法,如果方法名相同牍白,最終使用的是子類(lèi)自己的脊凰。 - 注意事項(xiàng)
父類(lèi)中私有方法不能被重寫(xiě),因?yàn)樽宇?lèi)無(wú)法繼承父類(lèi)的私有方法茂腥。 - 子類(lèi)重寫(xiě)父類(lèi)方法時(shí)狸涌,訪(fǎng)問(wèn)權(quán)限不能比父類(lèi)更低。
- 父類(lèi)靜態(tài)方法最岗,子類(lèi)也必須通過(guò)靜態(tài)方法進(jìn)行重寫(xiě)
-
final
- 最終的意思帕胆,用處是不讓子類(lèi)的方法重載覆蓋掉父類(lèi)的功能,只能讓他使用般渡。
- final可以修飾類(lèi)懒豹,方法和變量
- final修飾類(lèi)的特點(diǎn)
這是最終類(lèi)芙盘,被final修飾了之后,無(wú)法稱(chēng)為父類(lèi)了脸秽。 - final修飾方法的特點(diǎn)
被final修飾的方法儒老,無(wú)法被重寫(xiě) - final修飾變量的特點(diǎn)。
變量就變成了常量豹储,只能被賦值一次贷盲。
-
多態(tài)概述
- 某一個(gè)事物,在不同時(shí)刻表現(xiàn)出來(lái)的不同狀態(tài)剥扣。
父類(lèi) 名稱(chēng) = new 子類(lèi)()巩剖;
-##多態(tài)的前提 - 要有繼承關(guān)系
- 要有方法重寫(xiě)
- 要有父類(lèi)引用指向子類(lèi)對(duì)象。
- 某一個(gè)事物,在不同時(shí)刻表現(xiàn)出來(lái)的不同狀態(tài)剥扣。
-
多態(tài)中的成員訪(fǎng)問(wèn)特點(diǎn)
- 成員變量
編譯看左邊钠怯,運(yùn)行就是父類(lèi)的值佳魔。 - 構(gòu)造方法
創(chuàng)建子類(lèi)對(duì)象的時(shí)候,訪(fǎng)問(wèn)父類(lèi)的構(gòu)造方法晦炊,對(duì)父類(lèi)的數(shù)據(jù)進(jìn)行初始化鞠鲜。 - 成員方法
編譯看左邊,如果子類(lèi)有多出的方法就報(bào)錯(cuò)(這也是多態(tài)的弊端)断国,運(yùn)行結(jié)果看子類(lèi)的贤姆。 - 靜態(tài)方法
編譯看左邊,運(yùn)行也是父類(lèi)
- 成員變量
-
多態(tài)的優(yōu)點(diǎn)
- 提高了代碼的維護(hù)性(繼承保證)
- 提高了代碼的擴(kuò)展行()
-
對(duì)象間的轉(zhuǎn)型問(wèn)題
- 向上轉(zhuǎn)型:
Fu f = new Zi(); - 向下轉(zhuǎn)型
Zi() z = (Zi)f;
- 向上轉(zhuǎn)型:
-
抽象類(lèi)的概述
- 一個(gè)沒(méi)有方法體的方法應(yīng)該定義為抽象方法稳衬,而類(lèi)中如果有抽象方法霞捡,該類(lèi)必須定義為抽象類(lèi)。
- 抽象類(lèi)和抽象方法必須用abstract關(guān)鍵字修飾
abstract class 類(lèi)名{}
public abstract void eat()薄疚;
-
抽象類(lèi)的特點(diǎn)
- 抽象類(lèi)和抽象方法必須用abstract關(guān)鍵字修飾
- 抽象類(lèi)中不一定有抽象方法碧信,但是有抽象方法的類(lèi)必須定義為抽象類(lèi)。
- 抽象不能實(shí)例化
- 因?yàn)樗皇蔷唧w的街夭。
- 抽象類(lèi)有構(gòu)造方法砰碴,但是不能實(shí)例化。構(gòu)造方法的作用是什么呢板丽?
- 用于子類(lèi)訪(fǎng)問(wèn)父類(lèi)數(shù)據(jù)的初始化
- 抽象的子類(lèi)
- 如果不想重寫(xiě)抽象方法呈枉,該子類(lèi)是一個(gè)抽象類(lèi)。
- 重寫(xiě)所有的抽象方法埃碱,這個(gè)時(shí)候子類(lèi)是一個(gè)具體的類(lèi)
- 抽象類(lèi)的實(shí)例化其實(shí)是靠具體的子類(lèi)實(shí)現(xiàn)的碴卧,是多態(tài)的方式。
- 抽象類(lèi)中的抽象方法就是強(qiáng)制要求子類(lèi)必須重寫(xiě)乃正,也就是強(qiáng)制子類(lèi)做的事情。
-
抽象類(lèi)中的小問(wèn)題
- 一個(gè)類(lèi)如果沒(méi)有抽象方法婶博,可不可以定義為抽象類(lèi)瓮具?如果可以,有什么意義。
- 可以
- 意義是不讓創(chuàng)建對(duì)象名党,只能通過(guò)子類(lèi)訪(fǎng)問(wèn)
- abstract不能和哪些修飾方法時(shí)的關(guān)鍵字共存
- private 沖突
- final 沖突
- static 無(wú)意義
- 一個(gè)類(lèi)如果沒(méi)有抽象方法婶博,可不可以定義為抽象類(lèi)瓮具?如果可以,有什么意義。
-
接口概述
為了體現(xiàn)事物功能的擴(kuò)展性叹阔,java中就提供了接口來(lái)定義這些額外功能,并不給出具體實(shí)現(xiàn)传睹。
-
接口的特點(diǎn)
- 接口用interface表示
- 類(lèi)實(shí)現(xiàn)接口用implements表示
- 接口不能實(shí)例化
- 按照多態(tài)的方式來(lái)實(shí)例化
- 接口多態(tài)是多態(tài)中最常用的耳幢。
-
接口成員的特點(diǎn)
- 成員變量:只能是常量,并且是靜態(tài)的欧啤。
默認(rèn)修飾符public睛藻、static、final
建議是自己動(dòng)手給出變量的值邢隧。 - 構(gòu)造方法
接口沒(méi)有構(gòu)造方法店印。 - 成員方法
只能是抽象方法。
默認(rèn)修飾符:public abstract
建議自己手動(dòng)給出倒慧。
- 成員變量:只能是常量,并且是靜態(tài)的欧啤。
-
抽象類(lèi)和接口的區(qū)別
- 成員區(qū)別
- 抽象類(lèi)
成員變量可以變量按摘,也可以常量。
構(gòu)造方法有
成員方法可以抽象纫谅,也可以非抽象 - 接口
成員變量只可以常量
成員方法只可以抽象
- 抽象類(lèi)
- 關(guān)系區(qū)別
- 類(lèi)與類(lèi)
繼承關(guān)系炫贤,能單繼承,也可以多層繼承付秕。 - 類(lèi)與接口
實(shí)現(xiàn)關(guān)系兰珍,可以單實(shí)現(xiàn),也可以多實(shí)現(xiàn)盹牧。 - 接口與接口
繼承關(guān)系俩垃,可以單繼承,也可以多繼承
- 類(lèi)與類(lèi)
- 設(shè)計(jì)理念區(qū)別
抽象類(lèi)被繼承體現(xiàn)的是is a的關(guān)系汰寓,抽象類(lèi)中定義的是該繼承體系的共性功能口柳。
接口被實(shí)現(xiàn)體現(xiàn)的是like a 的關(guān)系,接口中定義的是該繼承體系的擴(kuò)展功能有滑。
- 成員區(qū)別
-
權(quán)限修飾符
%%0I~(N6Z3{XWGOL1(KSOP9.png
-
類(lèi)及其組成所使用的常見(jiàn)修飾符
- 類(lèi)
- 權(quán)限修飾符:默認(rèn)修飾符跃闹,public
- 狀態(tài)修飾符:final
- 抽象修飾符:abstract
- 用的最多的就是:public
- 成員變量
- 權(quán)限修飾符:private,默認(rèn)的毛好,protected望艺,public
- 狀態(tài)修飾符:static,final
- 構(gòu)造方法
- 權(quán)限修飾符:private肌访,默認(rèn)的找默,protected,public
- 成員方法
- 權(quán)限修飾符:private吼驶,默認(rèn)的惩激,protected店煞,public
- 狀態(tài)修飾符:static,final
- 抽象修飾符:abstract
- 其他組合規(guī)則:
- 成員變量:public static final
- 成員方法: public static,public abstract,public final
- 類(lèi)
-
內(nèi)部類(lèi)概述和講解
就是把類(lèi)定義在類(lèi)的內(nèi)部风钻。
- 內(nèi)部類(lèi)可以直接訪(fǎng)問(wèn)外部類(lèi)的成員顷蟀,包括私有私有
- 外部類(lèi)要訪(fǎng)問(wèn)內(nèi)部類(lèi)的成員,必須創(chuàng)建對(duì)象骡技。
- 內(nèi)部類(lèi)位置
- 成員位置:在成員位置定義的類(lèi)鸣个,被稱(chēng)為成員內(nèi)部類(lèi)。
使用 外部類(lèi)名.內(nèi)部類(lèi)名 對(duì)象名 = new 外部類(lèi)名().new 內(nèi)部類(lèi)名()
被靜態(tài)修飾后用
外部類(lèi)名,內(nèi)部類(lèi)名 對(duì)象名 = new 外部類(lèi)名.內(nèi)部類(lèi)名();
外部類(lèi)名.內(nèi)部類(lèi)名.方法(); - 局部位置:在局部位置定義的類(lèi)布朦,被稱(chēng)為局部?jī)?nèi)部類(lèi)囤萤。
局部可以直接訪(fǎng)問(wèn)外部類(lèi)的成員
在局部位置,可以創(chuàng)建內(nèi)部類(lèi)對(duì)象喝滞,通過(guò)對(duì)象調(diào)用內(nèi)部類(lèi)方法阁将,來(lái)使用局部?jī)?nèi)部類(lèi)功能。
局部?jī)?nèi)部訪(fǎng)問(wèn)局部變量必須用final修飾局部變量
因?yàn)榫植孔兞繒?huì)隨著方法的調(diào)用完畢而消失右遭,這個(gè)時(shí)候做盅,局部對(duì)象并沒(méi)用立馬從堆內(nèi)存中消失,還要使用那個(gè)變量窘哈。為了讓數(shù)據(jù)還能據(jù)繼續(xù)被使用吹榴,就用final修飾。
- 成員位置:在成員位置定義的類(lèi)鸣个,被稱(chēng)為成員內(nèi)部類(lèi)。