2019-03-20 面向?qū)ο?/h2>

1.面向?qū)ο蟮姆庋b:

? ? 1)封裝的概念

????????????封裝就是打包,把東西包裝在一個容器里,當(dāng)需要的時候就從容器里取

? ? ? ? ? ? 在java中則是添加一個訪問權(quán)限,來控制這部分?jǐn)?shù)據(jù)可以被哪些權(quán)限訪問

????2)在Java 中的體現(xiàn)及步驟

????????(1)把類中的字段私有化;

????????(2)給每一個字段都提供一組getter ?setter方法 ?(方法的規(guī)范寫法);setXxx

????????????在測試類中嘗試創(chuàng)建對象,并通過調(diào)用getter setter方法完成 對字段的賦值和取值;

????????(3)提供一個無參數(shù)的構(gòu)造方法

? ? ? ? ? ? ? ? 1>那么如果把set和get方法寫成一個方法呢?

? ? ? ? ? ? ? ? 這個時候我們需要考慮:

????????????????????a.如果我們只是要取值或者只是要賦值的時候呢

? ? ? ? ? ? ? ? ? ? b.傳入的值和傳出的值要怎么辦 ?

????????????????2>如果把一個類中的多個字段的賦值方法 寫成一個方法?

? ? ? ? ? ? ? ? ? ? a.同理,如果我們只是要傳入一個字段的值呢

? ? ? ? ? ? ? ? ?總結(jié):我們應(yīng)該讓功能單一且最小化,防止沖突

????3)給對象的字段賦值 一共有哪些方式:

????????(1)直接訪問字段賦值 ? 標(biāo)準(zhǔn)java類 X 字段一般都會給私有化(私有化訪問不到);

????????(2)通過構(gòu)造方法賦值 ? ?只能夠創(chuàng)建對象的時候賦初始值;

? ? ? ??????????new Student(“小李”);

????????????????new Student(“小李飛刀”);

? ? ? ? ? ? 上面的代碼 不是把“小李”修改成“小李飛刀”,而是重新創(chuàng)建對象;

????????(3)通過(set+字段名)方法賦值 ?更靈活;

? ? ? ? ? ? set方法雖然非常方便,但是它和有參數(shù)的構(gòu)造方法之間并不沖突,創(chuàng)建對象時賦值后面還是可以修改,例如:

????????????????Student s = new Student(“小李飛刀”);

????????????????s.setName(“小李他媽的飛刀”);

????4)JavaBean (一個標(biāo)準(zhǔn)的Java類)

????????(1)字段必須私有化

????????(2)給每一個字段提供合理的getter setter方法

????????(3)必須有一個公共的無參數(shù)的構(gòu)造方法; ?

? ? 5)權(quán)限修飾符:public ? private ? protected ? 默認(rèn)不寫

? ? ? ? (1)(共同)可以修飾哪些東西:

? ? ? ? ? ? ? ? a.內(nèi)部類

? ? ? ? ? ? ? ? b.類中的字段

? ? ? ? ? ? ? ? c.類中的方法

? ? ? ? ? ? ? ? 補(bǔ)充:public和 ?默認(rèn)不寫 ?可以修飾外部類

? ? ? ? (2)各個修飾符代表的權(quán)限

?????????????????????????????同一個類中的成員????????????????????????同一個包中的成員????????????????????????不同包但存在繼承的子類????????????????????????全局

private(私有)????????????????????√???

默認(rèn)不寫 ? ? ? ? ? ? ? ? ? ? ? ? ?√????????????????????????????????????????????????????√??

protected(受保護(hù)) ? ? ? ? ? √ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?√????????????????????????????????????????????????????????????????√?

public(公共) ? ? ? ? ? ? ? ? ? ? √????????????????????????????????????????????????????√????????????????????????????????????????????????????????????????√????????????????????????????????????????????????√

2.繼承

????1)概念:

????(1)專業(yè)解釋:

????????a.泛華:在多個子類的基礎(chǔ)上面抽取共有屬性的行為到一個父類中去

????????b.特化:在一個父類的基礎(chǔ)上拓展子類特有的屬性和行為,生成一個新的子類

????????c.原則:父類存放共性,子類存放特性

???(2)代碼理解:

????????1>三個類都有重復(fù)的代碼,可以把這部分內(nèi)容 抽出去,抽出去放到另外一個類里面;

? ? ? ? ????a.上面的類我們叫做 ?父類(超類,基類,根類)

????????2>下面的3個類和上面的類需要發(fā)生一點關(guān)系【繼承】

???????????a. 下面的類我們叫做 子類(派生類,拓展類)

????????3>提取好處 : 提高了代碼的復(fù)用性

? ? 2)基本語法:

????????格式:

????????class Animal{

????????????private int year;

????????????String name;

????????????int age;

????????????void eat(){

????????????????System.out.println("版本......");

????????????}

????????}

????????class Pig extends Animal{

? ? ? ? }

????3)什么可以被繼承

????(1)語法:

? ? ? ? ? ?class A{}

????????????class B extends A{}

????????????B這個類繼承了A這個類

????(2)可以繼承哪些東西:

????????????①類

????????????②字段

????????????③ 普通方法

????????????④ 構(gòu)造方法 (X)

????????????當(dāng)父類有字段是私有化的時(private),只有自己能訪問

????4)繼承的特點

????(1)java中的繼承只能是單繼承

????????????一個類只能繼承一個類,但是一個類可以被多個類繼承

????(2)可以支持多重繼承

????????????一個類可以有子類也可以有父類,它的父類也可以有父類

????(3)每個類都有一個直接父類,如果不寫出來,就隱式繼承Object類

3.多態(tài)

?????1)概念的理解:一種事物的多種形態(tài),就像是“一千個人心中有一千個哈姆雷特”這句話一樣,每個人心中都有對哈姆雷特的認(rèn)知,對于這句話,每個人的理解也不同

? ? ? ? (1)在java中,一個大的數(shù)據(jù)類型可以兼容一個小的數(shù)據(jù)類型,比如:某一個類的父類(動物類)如果作為一種數(shù)據(jù)類型,那么用它聲明的變量可以存入這個類的子類(鳥類)創(chuàng)建的對象(一只鳥是動物)

????2)官方概念:編譯時跟運行時類型不一致就產(chǎn)生了多態(tài)

? ? 3)編譯和運行時的區(qū)別

? ? ? ? 有兩個類:Animal和Bird

? ? ? ? class Animal{

? ? ? ? ? ? public void action(){

? ? ? ? ? ? ? ? System.out.println("動物");

????????????}

????????}

? ? ? ? class Bird extends Animal{

? ? ? ? ? ? public void action(){

????????????????System.out.println("鳥");

????????????}

????????}

? ? ? ? 在主方法中我們寫入

? ? ? ? Animal animal = new Bird();

? ? ? ? animal.action();

? ? ? ? 此時如果進(jìn)行編譯,不會報錯,但如果把父類中的方法給去掉,則編譯報錯

? ? ? ? 原因:編譯時先看父類類型,在父類類型中找字段或者方法,如果沒有則會向上找父類的父類,如果一直沒有那么就會報錯

? ? ? ? 但是如果編譯不報錯,那么運行時一定不報錯(在沒有其他問題的情況下)

? ? 4)作用:

? ? ? ? (1)調(diào)用方法傳遞參數(shù)時:大的數(shù)據(jù)類型兼容小的數(shù)據(jù)類型,那么如果我要傳入一種鳥的具體對象,可以用動物類這個類型接收

? ? ? ? (2)調(diào)用方法后返回值時:同理,返回一個鳥的具體對象,可以用動物類接收

? ? ? ? ????好處:屏蔽了不同子類之間實現(xiàn)的差異

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容