Java封裝、繼承缤弦、多態(tài)三大特征的理解

姓名: 李小娜

[嵌牛導讀]:封裝领迈、繼承、多態(tài)三大特征是java中比較常用的碍沐,務必要掌握狸捅,下面給大家介紹Java封裝、繼承累提、多態(tài)三大特征的理解尘喝,有不清楚的朋友可以一起學習下

[嵌牛鼻子]:封裝 ??java的繼承 ??java中的多態(tài) ??

[嵌牛提問]:有幾種多態(tài)機制?

[嵌牛正文] :首先先簡單的說一下其3大特性的定義:

封裝:隱藏對象的屬性和實現細節(jié)斋陪,僅對外公開接口,控制在程序中屬性的讀和修改的訪問級別朽褪。將抽象得到的數據和行為(或功能)相結合,形成一個有機的整體无虚,也就是將數據與操作數據的源代碼進行有機的結合鞍匾,形成“類”,其中數據和函數都是類的成員骑科。封裝的目的是增強安全性和簡化編程橡淑,使用者不必了解具體的實現細節(jié),而只是要通過外部接口咆爽,一特定的訪問權限來使用類的成員梁棠。封裝的基本要求是: 把所有的屬性私有化置森,對每個屬性提供getter和setter方法,如果有一個帶參的構造函數的話符糊,那一定要寫一個不帶參的構造函數凫海。在開發(fā)的時候經常要對已經編寫的類進行測試,所以在有的時候還有重寫toString方法男娄,但這不是必須的行贪。

繼承:通過繼承實現代碼復用。Java中所有的類都是通過直接或間接地繼承java.lang.Object類得到的模闲。繼承而得到的類稱為子類建瘫,被繼承的類稱為父類。子類不能繼承父類中訪問權限為private的成員變量和方法尸折。子類可以重寫父類的方法啰脚,及命名與父類同名的成員變量。但Java不支持多重繼承实夹,即一個類從多個超類派生的能力橄浓。在開發(fā)中盡量減少繼承關系,這樣做是為了把程序的耦合度降低亮航。

多態(tài):多態(tài)又分為設計時多態(tài)和運行時多態(tài)荸实,例如重載又被稱為設計時多態(tài),而對于覆蓋或繼承的方法缴淋,JAVA運行時系統根據調用該方法的實例的類型來決定選擇調用哪個方法則被稱為運行時多態(tài)准给。總而言之宴猾,面向對象的設計的典型特點就是繼承,封裝和多態(tài)叼旋,這些特點也是面向對象之所以能如此盛行的關鍵所在仇哆。

封裝

java中類的屬性的訪問權限默認值不是private,要想隱藏該屬性的方法,就可以加private修飾符夫植,來限制只能夠在類的內部進行訪問讹剔。

對于類中的私有屬性,要對其給出一對方法(getXXX详民,setXXX())訪問私有屬性延欠,保證對私有屬性的操作和安全性。

方法的封裝沈跨,該公開的公開由捎,該隱藏的隱藏。

java的繼承

繼承饿凛,是對有著共同特性的多類事物狞玛,進行再抽象成一個類软驰。

java中的繼承要使用extends關鍵字,并且java中指允許單繼承心肪,也就是一個類只能有一個父類锭亏。

構造方法不能被繼承

java方法中的覆蓋

子類中有和父類中可訪問的同名同返回同參數列表的方法時硬鞍,就會覆蓋從父類繼承來的方法慧瘤。

super()關鍵字

super(),表示在子類的構造方法調用父類的構造方法時,super()也只能在構造方法中的第一句固该。

java中的多態(tài)

有兩種多態(tài)的機制:編譯時多態(tài)锅减、運行時多態(tài)

1、方法的重載:重載是指同一類中有多個同名的方法蹬音,但這些方法有著不同的參數上煤。,因此在編譯時就可以確定到底調用哪個方法著淆,它是一種編譯時多態(tài)劫狠。

2、方法的覆蓋:子類可以覆蓋父類的方法永部,因此同樣的方法會在父類中與子類中有著不同的表現形式独泞。在java語言中,基類的引用變量不僅可以指向基類的實例對象苔埋,也可以指向子類的實例對象懦砂,同樣,接口中的引用變量也可以指向其實現類的實例對象组橄。


publicclassA {

publicString show(D obj) {

return("A and D");

}

publicString show(A obj) {

return("A and A");

}

}

publicclassBextendsA{

publicString show(B obj){

return("B and B");

}

publicString show(A obj){

return("B and A");

}

}

publicclassCextendsB{

}

publicclassDextendsB{

}

publicclassTest {

publicstaticvoidmain(String[] args) {

A a1 =newA();

A a2 =newB();

B b =newB();

C c =newC();

D d =newD();

System.out.println("1--"+ a1.show(b));

System.out.println("2--"+ a1.show(c));

System.out.println("3--"+ a1.show(d));

System.out.println("4--"+ a2.show(b));

System.out.println("5--"+ a2.show(c));

System.out.println("6--"+ a2.show(d));

System.out.println("7--"+ b.show(b));

System.out.println("8--"+ b.show(c));

System.out.println("9--"+ b.show(d));

}

}

1--A and A

2--A and A

3--A and D

4--B and A

5--B and A

6--A and D

7--B and B

8--B and B

9--A and D

當超類對象引用變量引用子類對象時荞膘,被引用對象的類型而不是引用變量的類型決定了調用誰的成員方法,但是這個被調用的方法必須是在超類中定義過的玉工,也就是說被子類覆蓋的方法羽资。

這我們用一個例子來說明這句話所代表的含義:a2.show(b);

這里a2是引用變量遵班,為A類型屠升,它引用的是B對象,因此按照上面那句話的意思是說有B來決定調用誰的方法,所以a2.show(b)應該要調用B中的show(B

obj)狭郑,產生的結果應該是“B and

B”腹暖,但是為什么會與前面的運行結果產生差異呢?這里我們忽略了后面那句話“但是這兒被調用的方法必須是在超類中定義過的”翰萨,那么show(B

obj)在A類中存在嗎脏答?根本就不存在!所以這句話在這里不適用?那么難道是這句話錯誤了以蕴?非也糙麦!其實這句話還隱含這這句話:它仍然要按照繼承鏈中調用方法的優(yōu)先級來確認。所以它才會在A類中找到show(A

obj)丛肮,同時由于B重寫了該方法所以才會調用B類中的方法赡磅,否則就會調用A類中的方法。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末宝与,一起剝皮案震驚了整個濱河市焚廊,隨后出現的幾起案子,更是在濱河造成了極大的恐慌习劫,老刑警劉巖咆瘟,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異诽里,居然都是意外死亡袒餐,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門谤狡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灸眼,“玉大人,你說我怎么就攤上這事墓懂⊙嫘” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵捕仔,是天一觀的道長匕积。 經常有香客問我,道長榜跌,這世上最難降的妖魔是什么闪唆? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮钓葫,結果婚禮上悄蕾,老公的妹妹穿的比我還像新娘。我一直安慰自己瓤逼,他們只是感情好笼吟,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布库物。 她就那樣靜靜地躺著霸旗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪戚揭。 梳的紋絲不亂的頭發(fā)上诱告,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音民晒,去河邊找鬼精居。 笑死锄禽,一個胖子當著我的面吹牛,可吹牛的內容都是我干的靴姿。 我是一名探鬼主播沃但,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼佛吓!你這毒婦竟也來了宵晚?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤维雇,失蹤者是張志新(化名)和其女友劉穎淤刃,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體吱型,經...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡逸贾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了津滞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铝侵。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖据沈,靈堂內的尸體忽然破棺而出哟沫,到底是詐尸還是另有隱情,我是刑警寧澤锌介,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布嗜诀,位于F島的核電站,受9級特大地震影響孔祸,放射性物質發(fā)生泄漏隆敢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一崔慧、第九天 我趴在偏房一處隱蔽的房頂上張望拂蝎。 院中可真熱鬧,春花似錦惶室、人聲如沸温自。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悼泌。三九已至,卻和暖如春夹界,著一層夾襖步出監(jiān)牢的瞬間馆里,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鸠踪,地道東北人坛善。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓天梧,卻偏偏與公主長得像召川,于是被迫代替她去往敵國和親冰蘑。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法评汰,類相關的語法滥沫,內部類的語法,繼承相關的語法键俱,異常的語法兰绣,線程的語...
    子非魚_t_閱讀 31,639評論 18 399
  • Win7下如何打開DOS控制臺? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,599評論 4 12
  • (一)Java部分 1编振、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,107評論 0 62
  • 小編費力收集:給你想要的面試集合 1.C++或Java中的異常處理機制的簡單原理和應用缀辩。 當JAVA程序違反了JA...
    八爺君閱讀 4,592評論 1 114
  • 總有一個比你忙的人在鍛煉 不知不覺中,小灶運動榜就一個月了踪央。 給天天鍛煉的灶友們點贊 將來的我們一定會感謝現在拼命...
    百日跑者孫大剩閱讀 254評論 3 6