java的三大特性,封裝,繼承,多態

封裝?

Java代碼??收藏代碼
  1. /**?
  2. ?*?所謂封裝,就是將對象具有的成員變量和成員函數包裝和隱藏起來,讓外界無法直接使用,?
  3. ?*?被封裝的成員只能通過某些特定的方式才能訪問。??
  4. ?*?實現封裝有兩個步驟:?
  5. ?*???1、將不能暴露的成員隱藏起來,我們就不能讓其在類的外部被直接訪問或賦值。?
  6. ?*??????實現方法是將該成員定義為私有的,在成員定義前加上private訪問權限修飾符。?
  7. ?*???2、用公共方法來暴露對該隱藏成員的訪問,可以給成員加上public修飾符,將該成員定義為公共的?
  8. ?*/??
  9. package?com.study.feature;??
  10. ??
  11. /**????
  12. ?*??
  13. ?*?@className?:Package???
  14. ?*?@package?:?com.study.feature??
  15. ?*?@Description?:封裝性的測試????
  16. ?*?@author:lgf????
  17. ?*?@date?:2012?三月?12??10:20:35???????????
  18. ?*?@version?:?1.0?
  19. ?*/??
  20. public?class?Package?{??
  21. ????//?使用private隱藏??
  22. ????private?String?strValue;??
  23. ??
  24. ????//?通過get和set進行訪問??
  25. ????public?String?getStrValue()?{??
  26. ????????return?this.strValue;??
  27. ????}??
  28. ????public?void?setStrValue(String?strValue)?{??
  29. ????????this.strValue?=?strValue;??
  30. ????}??
  31. }??




繼承?
父類 ExtendsFather.java?

Java代碼??收藏代碼
  1. /**?
  2. ?*?繼承是一種聯結類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。?
  3. ?*?對象的一個新類可以從現有的類中派生。?
  4. ?*?1.?為什么要使用繼承??
  5. ?*??a.提高程序的擴展性。?
  6. ????b.提高了代碼的重用性。?
  7. ?????
  8. ???2.?子類能繼承到父類的那些方法和屬性?
  9. ????第一種:所有的屬性和方法都被子類繼承到了。?
  10. ????第二種:?
  11. ????a、子類和父類在同一個包下:?
  12. ????公有的受保護的屬性和方法被子類繼承到了。?
  13. ????b、子類和父類不在同一個包下:?
  14. ????公有的方法和屬性被子類繼承到了。?
  15. ?????
  16. ???3.?子類的對象能調用父類的那些方法和屬性??
  17. ????a、子類和父類在同一個包下:?
  18. ????公有的受保護的屬性和方法能被子類調用。?
  19. ????b、子類和父類不在同一個包下:?
  20. ????公有的方法和屬性能被子類調用。?
  21. ????在類和抽象類中,默認的就是受保護的。?
  22. ????在接口中,默認的就是公有的。?
  23. ?*/??
  24. package?com.study.feature;??
  25. ??
  26. /**????
  27. ?*?父類?
  28. ?*?@className?:ExtendsFather???
  29. ?*?@package?:?com.study.feature??
  30. ?*?@Description?:繼承測試????
  31. ?*?@author:lgf????
  32. ?*?@date?:2012?三月?12??10:33:02???????????
  33. ?*?@version?:?1.0?
  34. ?*/??
  35. public?class?ExtendsFather?{??
  36. ????//?定義不同四種修飾符的屬性??
  37. ????private?????String?privateValue;??
  38. ????protected???String?protectedValue;??
  39. ????????????????String?defaultValue;??
  40. ????public??????String?publicValue;??
  41. ??????
  42. ????//?定義不同四種修飾符的方法??
  43. ????private?void?privateFunction(){??
  44. ????????System.out.println("privateFunction");??
  45. ????}??
  46. ??????
  47. ????protected?void?protectedFunction(){??
  48. ????????System.out.println("protectedFunction");??
  49. ????}??
  50. ??????
  51. ????void?defaultFunction(){??
  52. ????????System.out.println("defaultFunction");??
  53. ????}??
  54. ??????
  55. ????public?void?publicFunction(){??
  56. ????????System.out.println("publicFunction");??
  57. ????}??
  58. }??



同包下的子類 ExtendsChildrenSamePackage.java?

Java代碼??收藏代碼
  1. package?com.study.feature;??
  2. /**?
  3. *??
  4. *??
  5. *?@className?:ExtendsChildrenSamePackage???
  6. *?@package?:?com.study.feature??
  7. *?@Description?:?同一個包下面的繼承關系????
  8. *?@author:lgf????
  9. *?@date?:2012?三月?12??10:51:23???????????
  10. *?@version?:?1.0?
  11. ?*/??
  12. public?class?ExtendsChildrenSamePackage?extends?ExtendsFather{??
  13. ????public?static?void?main(String[]?args)?{??
  14. ????????ExtendsFather?children?=?new?ExtendsChildrenSamePackage();??
  15. ????????//children.privateValue?=?"no";?無法訪問到??
  16. ????????children.defaultValue?=?"ok";??
  17. ????????children.protectedValue?=?"ok";??
  18. ????????children.publicValue?=?"ok";??
  19. ??????????
  20. ????????//除了private修飾的方法,其他都繼承到了??
  21. ????????//children.privateFunction();??
  22. ????????children.defaultFunction();??
  23. ????????children.protectedFunction();??
  24. ????????children.publicFunction();??
  25. ????}??
  26. }??



不同包下的子類 ExtendsChildrenOtherPackage.java?


Java代碼??收藏代碼
  1. /**?
  2. ?*??
  3. ?*/??
  4. package?com.study.featureSecond;??
  5. import?com.study.feature.ExtendsFather;??
  6. ??
  7. /**????
  8. ?*??
  9. ?*?@className?:ExtendsChildrenOtherPackage???
  10. ?*?@package?:?com.study.featureSecond??
  11. ?*?@Description?:不同包下面的繼承關系????
  12. ?*?@author:lgf????
  13. ?*?@date?:2012?三月?12??10:50:47???????????
  14. ?*?@version?:?1.0?
  15. ?*/??
  16. public?class?ExtendsChildrenOtherPackage?extends?ExtendsFather{??
  17. ????public?static?void?main(String[]?args)?{??
  18. ????????ExtendsFather?children?=?new?ExtendsChildrenOtherPackage();??
  19. ????????//children.privateValue?=?"no";?無法訪問到??
  20. ????????//children.defaultValue?=?"no";?無法訪問到??
  21. ????????//children.protectedValue?=?"no";?無法訪問到??
  22. ????????children.publicValue=?"ok";??
  23. ??????????
  24. ????????//除了public修飾的方法,其他都未繼承到了??
  25. ????????//children.privateFunction();??
  26. ????????//children.defaultFunction();??
  27. ????????//children.protectedFunction();??
  28. ????????children.publicFunction();??
  29. ????}??
  30. }??



重載和重寫 ExtendsOverRideLoad.java?

Java代碼??收藏代碼
  1. /**?
  2. ?*??
  3. ?*/??
  4. package?com.study.feature;??
  5. ??
  6. /**????
  7. ?*??
  8. ?*?@className?:ExtendsClass???
  9. ?*?@package?:?com.study.feature??
  10. ?*?@Description?:重載和重寫????
  11. ?*?@author:lgf????
  12. ?*?@date?:2012?三月?12??11:00:35???????????
  13. ?*?@version?:?1.0?
  14. ?*/??
  15. public?class?ExtendsOverRideLoad?extends?ExtendsFather?{??
  16. ????@Override??
  17. ????public?void?publicFunction()?{??
  18. ????????//super.publicFunction();?可以調用父類的方法??
  19. ????????System.out.println("Override?publicFunction");??
  20. ????}??
  21. ??????
  22. ????public?void?publicFunction(String?str)?{??
  23. ????????//super.publicFunction();?可以調用父類的方法??
  24. ????????System.out.println("overload?publicFunction");??
  25. ????}??
  26. ??????
  27. ????public?static?void?main(String[]?args)?{??
  28. ????????ExtendsFather?child=?new?ExtendsOverRideLoad();??
  29. ??????????
  30. ????????//Override?publicFunction??
  31. ????????child.publicFunction();??
  32. ??????????
  33. ????????//child.publicFunction("s");??僅僅只能使用到父類有的方法,重載的方法無法調用??
  34. ??????????
  35. ????????ExtendsOverRideLoad?childSecond?=?new?ExtendsOverRideLoad();??
  36. ??????????
  37. ????????//Override?publicFunction??
  38. ????????childSecond.publicFunction();??
  39. ??????????
  40. ????????//overload?publicFunction??
  41. ????????childSecond.publicFunction("overLoad");??
  42. ????}??
  43. }??



多態?

父類? Animal.java?

Java代碼??收藏代碼
  1. /**?
  2. ?*?1.?Java中除了static和final方法外,其他所有的方法都是運行時綁定的?
  3. ?*?2.?構造方法是被隱式聲明為static方法?
  4. ?*?3.?動態綁定?
  5. ?*??將一個方法調用和一個方法主體連接到一起稱為綁定(Binding)。??
  6. ?*??根據綁定的時機不同,可將綁定分為“早期綁定”和“后期綁定”兩種。??
  7. ?*??如果在程序運行之前進行綁定(由編譯器和鏈接程序完成),稱為早期綁定。??
  8. ?*??如果在程序運行期間進行綁定,稱為后期綁定,后期綁定也稱為“動態綁定”或“運行時綁定”。??
  9. ?*??在Java中,多態性是依靠動態綁定實現的,即Java虛擬機在運行時確定要調用哪一個同名方法。??
  10. ?*?
  11. ?*??4.?多態總結?
  12. ?*??????一、使用父類類型的引用指向子類的對象?
  13. ?*??????二、該引用只能調用父類中定義的方法和變量?
  14. ?*??????三、如果子類中重寫了父類中的一個方法,那么在調用這個方法的時候,?
  15. ?*??????????將會調用子類中的這個方法;(動態連接、動態調用)?
  16. ?*??????四、變量不能被重寫(覆蓋),”重寫“的概念只針對方法,?
  17. ?*??????????如果在子類中”重寫“了父類中的變量,那么在編譯時會報錯。?
  18. ?*??5.?多態詳解?多態是通過:??
  19. ?*??????5.1?接口?和?實現接口并覆蓋接口中同一方法的幾不同的類體現的??
  20. ?*??????2?父類?和?繼承父類并覆蓋父類中同一方法的幾個不同子類實現的.?
  21. ?*?
  22. ?*??6.?一個類型引用只能引用引用類型自身含有的方法和變量?
  23. ?*/??
  24. package?com.study.feature;??
  25. ??
  26. /**????
  27. ?*?@className?:Animal???
  28. ?*?@package?:?com.study.feature??
  29. ?*?@Description?:多態的測試????
  30. ?*?@author:lgf????
  31. ?*?@date?:2012?三月?12??13:50:36???????????
  32. ?*?@version?:?1.0?
  33. ?*/??
  34. public?class?Animal?{??
  35. ????public?void?eat(){??
  36. ????????System.out.println("eating");??
  37. ????}??
  38. }??



多態實現?

Java代碼??收藏代碼
  1. /**?
  2. ?*??
  3. ?*/??
  4. package?com.study.feature;??
  5. ??
  6. /**????
  7. ?*??
  8. ?*?@className?:Cat???
  9. ?*?@package?:?com.study.feature??
  10. ?*?@Description?:貓????
  11. ?*?@author:lgf????
  12. ?*?@date?:2012?三月?12??13:54:01???????????
  13. ?*?@version?:?1.0?
  14. ?*/??
  15. public?class?Cat?extends?Animal{??
  16. ????public?void?eat(){??
  17. ????????System.out.println("eating?fish");??
  18. ????}??
  19. }??



Java代碼??收藏代碼
  1. /**?
  2. ?*??
  3. ?*/??
  4. package?com.study.feature;??
  5. ??
  6. /**????
  7. ?*??
  8. ?*?@className?:Dog???
  9. ?*?@package?:?com.study.feature??
  10. ?*?@Description?:狗????
  11. ?*?@author:lgf????
  12. ?*?@date?:2012?三月?12??13:55:38???????????
  13. ?*?@version?:?1.0?
  14. ?*/??
  15. public?class?Dog?extends?Animal{??
  16. ????public?void?eat(){??
  17. ????????System.out.println("eating?Bone");??
  18. ????}??
  19. }??




結果?

Java代碼??收藏代碼
  1. /**?
  2. ?*??
  3. ?*/??
  4. package?com.study.feature;??
  5. ??
  6. /**????
  7. ?*??
  8. ?*?@className?:Main???
  9. ?*?@package?:?com.study.feature??
  10. ?*?@Description?:多態測試????
  11. ?*?@author:lgf????
  12. ?*?@date?:2012?三月?12??13:57:11???????????
  13. ?*?@version?:?1.0?
  14. ?*/??
  15. public?class?Main?{??
  16. ??????
  17. ????public?static?void?main(String[]?args)?{??
  18. ????????Animal?animal?=?null;??
  19. ????????animal?=?new?Animal();??
  20. ????????animal.eat();//eating??
  21. ????????Animal?cat?=?new?Cat();??
  22. ????????cat.eat();//eating?fish??
  23. ????????Animal?dog?=?new?Dog();??
  24. ????????dog.eat();//eating?Bone??
  25. ????}??
  26. }??




例子2?

Java代碼??收藏代碼
  1. /**?
  2. ?*??
  3. ?*/??
  4. package?com.study.feature;??
  5. ??
  6. /**????
  7. ?*??
  8. ?*?@className?:Father???
  9. ?*?@package?:?com.study.feature??
  10. ?*?@Description?:多態????
  11. ?*?@author:lgf????
  12. ?*?@date?:2012?三月?12??14:53:41???????????
  13. ?*?@version?:?1.0?
  14. ?*/??
  15. public?class?Father?{??
  16. ????public?void?functionOne(){??
  17. ????????functionSecond();??
  18. ????}??
  19. ????public?void?functionSecond(){??
  20. ????????System.out.println("Father?functionSecond");??
  21. ????}??
  22. }??



Java代碼??收藏代碼
    1. /**?
    2. ?*??
    3. ?*/??
    4. package?com.study.feature;??
    5. ??
    6. /**????
    7. ?*??
    8. ?*?@className?:Children???
    9. ?*?@package?:?com.study.feature??
    10. ?*?@Description?:測試????
    11. ?*?@author:lgf????
    12. ?*?@date?:2012?三月?12??14:55:15???????????
    13. ?*?@version?:?1.0?
    14. ?*/??
    15. public?class?Children?extends?Father{??
    16. ????public?void?functionSecond(){??
    17. ????????System.out.println("Children?functionSecond");??
    18. ????}??
    19. ??????
    20. ????public?static?void?main(String[]?args)?{??
    21. ????????Father?c?=?new?Children();??
    22. ????????c.functionOne();//Children?functionSecond??
    23. ????}??
    24. }?

轉載于:https://www.cnblogs.com/caimuqing/p/5398415.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257367.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257367.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257367.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

銀行家算法實驗報告c語言版,銀行家算法實驗報告C語言版.doc

《操作系統》課程綜合性實驗報告姓名: 學號: 2016 年 11 月 20 日實驗題目進程調度算法程序設計一、實驗目的通過對安全性算法和銀行家算法的模擬,進一步理解資源分配的基本概念,加深對資源申請,資源分配(銀行家算法)以…

GetModuleHandle(NULL)獲取當前DLL模塊基址?

做一項目想在DLL內部代碼實現獲取本DLL的模塊基址,而且不知道本DLL名稱 最簡單的方法是想到GetModuleHandle(NULL),是否可以呢? 參看http://blog.csdn.net/guzhou_diaoke/article/details/8826558到的答案是否 自己嘗試了一下: DLL代碼(testDll): BOOL …

DataTable是否存在某個列的判斷

使用 DataTable.Columns.Contains方法可以判斷某個列名是否存在于某個DataTable中 //添加模擬數據 DataTable t new DataTable(); DataColumn col new DataColumn("aaa"); t.Columns.Add(col); col new DataColumn("bbb"); t.Columns.Add(col); col ne…

【評分】第三次作業-團隊展示

【評分】第三次作業-團隊展示 總結 【2017-10-10】更新: 分數映射至 [1,2] 分 【注意】: 為了保護大家隱私,以后發表博客: 涉及到學號時,僅提供后三位涉及到姓名時,僅提供名(省略姓)…

c語言變量為什么要定義,C語言為什么要規定對所用到的變量要“先定義,后使用”...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓int a10;以上一句話對變量a進行了聲明,定義以及初始化extern int a;以上一句話僅僅對變量a進行了聲明,將a的鏈接屬性設置為externalint *p;以上定義了一個指針int a10;int *p;p&a;以上為指針變量進行了賦…

iOS 開發--github的demo

令人驚訝的是,YYText 雖然代碼量很大(超過一萬行),但它只是 ibireme 的作品之一。ibireme 利用業余時間完成了 YYKit 工具庫,包括: YYModel — 高性能的 iOS JSON 模型框架。 YYCache — 高性能的 iOS 緩存…

RabbitMQ快速安裝配置指南

RabbitMQ快速安裝配置指南 官網的安裝教程由于需要解釋原理很多廢話,這里總結一下在CentOS7環境下的安裝配置過程。如需理解原理,請看官網原文的安裝指南或翻譯1. 安裝RabbitMQ server ## 安裝epel源 yum install -y epel-release## 安裝Erlang yum inst…

[轉]基于Starling移動項目開發準備工作

最近自己趁業余時間做的flash小游戲已經開發得差不多了,準備再完善下ui及數值后,投放到國外flash游戲站。期間也萌生想法,想把游戲拓展到手機平臺。這兩天嘗試了下,除去要接入ane接口的工作,小游戲本身不用做任何改動就…

c語言float輸出分數,c語言同一題目求解結果用float和int輸出值差1.

c語言同一題目求解結果用float和int輸出值差1.答案:3 信息版本:手機版解決時間 2018-12-08 22:35已解決2018-12-08 05:38c語言同一題目求解結果用float和int輸出值差1.最佳答案2018-12-08 06:01試試這樣就好了#include main(){long i;float j,j1,j2,j4,j6,j10;j110…

《構建之法》閱讀筆記02

今天我閱讀了《構建之法》4-6章。有許多的感悟。 以前編程序總喜歡亂命名變量,覺得自己看的懂就行了。但讀完構建之法第四章。我知道了程序是給別人看的,然后那只是程序比較簡單而已。如果一個程序過于龐大,而變量的命名有沒有實際的意義&…

2017-10-03 前端日報

2017-10-03 前端日報 精選 你需要知道的幾類npm依賴包管理看Zepto如何實現增刪改查DOM把cookie聊清楚6 Pro Tips from React DevelopersMulti-user experiences with A-Frameclintonwoo/hackernews-react-graphql: Hacker News clone rewritten with universal JavaScript, usi…

【樸靈評注】JavaScript 運行機制詳解:再談Event Loop

PS: 我先旁觀下大師們的討論,得多看書了~別人說的:“看了一下不覺得評注對到哪里去,只有吹毛求疵之感。 比如同步異步介紹,本來就無大錯;比如node圖里面的OS operation,推敲一下就可以猜到那是指同步操作&a…

c語言 strcpy原型,淺談C語言中strcpy,strcmp,strlen,strcat函數原型

實例如下://strcat(dest,src)把src所指字符串添加到dest結尾處(覆蓋dest結尾處的\0)并添加\0char *strcat(char * strDest, const char *strSrc){char *resstrDest;assert((strDest!NULL)&&(strSrc!NULL));while(*strDest)strDest;while(*strDest*strSrc){s…

angular——更多按鈕的上拉菜單(路由跳轉)

<button class"btn gray_text_btn list_item" ng-click"action.toMoreOptions()"><i class"icon ion-navicon"></i> </button> <!-------------------- 底部按鈕 -----------------------><section class&qu…

Python版——博客網站四 編寫日志創建頁

2019獨角獸企業重金招聘Python工程師標準>>> 開源地址&#xff1a;https://github.com/leebingbin/Python3.WebAPP.Blog 單從編碼來說&#xff0c;WebApp開發真正困難的地方在于編寫前端頁面。前端頁面需要混合HTML、CSS和JavaScript&#xff0c;如果對這三者沒有深…

c語言0-1勻分布隨機數,C++ generate_canonical均勻分布隨機數函數用法詳解

標準均勻分布是一個在范圍 [0&#xff0c;1) 內的連續分布。generate_canonical() 函數模板會提供一個浮點值范圍在 [0&#xff0c;1) 內&#xff0c;且有給定的隨機比特數的標準均勻分布。它有 3 個模板參數&#xff1a;浮點類型、尾數的隨機比特的個數&#xff0c;以及使用的…

第三十四天 how can I 堅持

“不要把所有的雞蛋放在同一個籃子里”是錯誤的&#xff0c;投資應該像馬克吐溫說的那樣&#xff0c;要把所有的雞蛋放在同一籃子里&#xff0c;并小心的看好他。---巴菲特。 那盆花還沒死&#xff0c;但是我又能做什么呢&#xff1f;技術。永遠的技術。睡覺。轉載于:https://w…

01-Swift 介紹

簡介 Swift 語言由蘋果公司在 2014 年推出&#xff0c;用來撰寫 OS X 和 iOS 應用程序2014 年&#xff0c;在 Apple WWDC 發布 幾家歡喜,幾家愁愁者:只學Object-C的人歡喜者:之前做過java/python/js語言的人歷史 2010 年 7 月&#xff0c;蘋果開發者工具部門總監 Chris Lattner…

2017—2018 實驗報告:實驗一

實驗一&#xff1a;實驗報告 課程&#xff1a;程序設計與數據結構 班級&#xff1a; 1623 姓名&#xff1a; 張旭升 學號&#xff1a;20162329 指導教師&#xff1a;婁嘉鵬 王志強 實驗日期&#xff1a;9月25日 實驗密級&#xff1a; 非密級 預習程度&#xff1a; 已預習 必修/…

病床呼叫系統有顯示屏c語言,病床呼叫系統畢業設計

內容介紹完整版大學病床呼叫系統畢業設計&#xff0c;已修改完格式摘 要醫院已經從人工管理模式向智能化方向發展。“病床呼叫系統”可以實現對病房的智能化管理&#xff0c;可實現呼叫、求救警報、信息存儲、顯示等等功能。患者在住院期間&#xff0c;可能會在任意時間請求醫…