日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java的三大特性,封装,继承,多态

發布時間:2023/12/13 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java的三大特性,封装,继承,多态 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

封裝?

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



  • 繼承?
    父類 ExtendsFather.java?

    Java代碼??
  • /**?
  • ?*?繼承是一種聯結類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。?
  • ?*?對象的一個新類可以從現有的類中派生。?
  • ?*?1.?為什么要使用繼承??
  • ?*??a.提高程序的擴展性。?
  • ????b.提高了代碼的重用性。?
  • ?????
  • ???2.?子類能繼承到父類的那些方法和屬性?
  • ????第一種:所有的屬性和方法都被子類繼承到了。?
  • ????第二種:?
  • ????a、子類和父類在同一個包下:?
  • ????公有的受保護的屬性和方法被子類繼承到了。?
  • ????b、子類和父類不在同一個包下:?
  • ????公有的方法和屬性被子類繼承到了。?
  • ?????
  • ???3.?子類的對象能調用父類的那些方法和屬性??
  • ????a、子類和父類在同一個包下:?
  • ????公有的受保護的屬性和方法能被子類調用。?
  • ????b、子類和父類不在同一個包下:?
  • ????公有的方法和屬性能被子類調用。?
  • ????在類和抽象類中,默認的就是受保護的。?
  • ????在接口中,默認的就是公有的。?
  • ?*/??
  • package?com.study.feature;??
  • ??
  • /**????
  • ?*?父類?
  • ?*?@className?:ExtendsFather???
  • ?*?@package?:?com.study.feature??
  • ?*?@Description?:繼承測試????
  • ?*?@author:lgf????
  • ?*?@date?:2012?三月?12??10:33:02???????????
  • ?*?@version?:?1.0?
  • ?*/??
  • public?class?ExtendsFather?{??
  • ????//?定義不同四種修飾符的屬性??
  • ????private?????String?privateValue;??
  • ????protected???String?protectedValue;??
  • ????????????????String?defaultValue;??
  • ????public??????String?publicValue;??
  • ??????
  • ????//?定義不同四種修飾符的方法??
  • ????private?void?privateFunction(){??
  • ????????System.out.println("privateFunction");??
  • ????}??
  • ??????
  • ????protected?void?protectedFunction(){??
  • ????????System.out.println("protectedFunction");??
  • ????}??
  • ??????
  • ????void?defaultFunction(){??
  • ????????System.out.println("defaultFunction");??
  • ????}??
  • ??????
  • ????public?void?publicFunction(){??
  • ????????System.out.println("publicFunction");??
  • ????}??
  • }??


  • 同包下的子類 ExtendsChildrenSamePackage.java?

    Java代碼??
  • package?com.study.feature;??
  • /**?
  • *??
  • *??
  • *?@className?:ExtendsChildrenSamePackage???
  • *?@package?:?com.study.feature??
  • *?@Description?:?同一個包下面的繼承關系????
  • *?@author:lgf????
  • *?@date?:2012?三月?12??10:51:23???????????
  • *?@version?:?1.0?
  • ?*/??
  • public?class?ExtendsChildrenSamePackage?extends?ExtendsFather{??
  • ????public?static?void?main(String[]?args)?{??
  • ????????ExtendsFather?children?=?new?ExtendsChildrenSamePackage();??
  • ????????//children.privateValue?=?"no";?無法訪問到??
  • ????????children.defaultValue?=?"ok";??
  • ????????children.protectedValue?=?"ok";??
  • ????????children.publicValue?=?"ok";??
  • ??????????
  • ????????//除了private修飾的方法,其他都繼承到了??
  • ????????//children.privateFunction();??
  • ????????children.defaultFunction();??
  • ????????children.protectedFunction();??
  • ????????children.publicFunction();??
  • ????}??
  • }??


  • 不同包下的子類 ExtendsChildrenOtherPackage.java?


    Java代碼??
  • /**?
  • ?*??
  • ?*/??
  • package?com.study.featureSecond;??
  • import?com.study.feature.ExtendsFather;??
  • ??
  • /**????
  • ?*??
  • ?*?@className?:ExtendsChildrenOtherPackage???
  • ?*?@package?:?com.study.featureSecond??
  • ?*?@Description?:不同包下面的繼承關系????
  • ?*?@author:lgf????
  • ?*?@date?:2012?三月?12??10:50:47???????????
  • ?*?@version?:?1.0?
  • ?*/??
  • public?class?ExtendsChildrenOtherPackage?extends?ExtendsFather{??
  • ????public?static?void?main(String[]?args)?{??
  • ????????ExtendsFather?children?=?new?ExtendsChildrenOtherPackage();??
  • ????????//children.privateValue?=?"no";?無法訪問到??
  • ????????//children.defaultValue?=?"no";?無法訪問到??
  • ????????//children.protectedValue?=?"no";?無法訪問到??
  • ????????children.publicValue=?"ok";??
  • ??????????
  • ????????//除了public修飾的方法,其他都未繼承到了??
  • ????????//children.privateFunction();??
  • ????????//children.defaultFunction();??
  • ????????//children.protectedFunction();??
  • ????????children.publicFunction();??
  • ????}??
  • }??


  • 重載和重寫 ExtendsOverRideLoad.java?

    Java代碼??
  • /**?
  • ?*??
  • ?*/??
  • package?com.study.feature;??
  • ??
  • /**????
  • ?*??
  • ?*?@className?:ExtendsClass???
  • ?*?@package?:?com.study.feature??
  • ?*?@Description?:重載和重寫????
  • ?*?@author:lgf????
  • ?*?@date?:2012?三月?12??11:00:35???????????
  • ?*?@version?:?1.0?
  • ?*/??
  • public?class?ExtendsOverRideLoad?extends?ExtendsFather?{??
  • ????@Override??
  • ????public?void?publicFunction()?{??
  • ????????//super.publicFunction();?可以調用父類的方法??
  • ????????System.out.println("Override?publicFunction");??
  • ????}??
  • ??????
  • ????public?void?publicFunction(String?str)?{??
  • ????????//super.publicFunction();?可以調用父類的方法??
  • ????????System.out.println("overload?publicFunction");??
  • ????}??
  • ??????
  • ????public?static?void?main(String[]?args)?{??
  • ????????ExtendsFather?child=?new?ExtendsOverRideLoad();??
  • ??????????
  • ????????//Override?publicFunction??
  • ????????child.publicFunction();??
  • ??????????
  • ????????//child.publicFunction("s");??僅僅只能使用到父類有的方法,重載的方法無法調用??
  • ??????????
  • ????????ExtendsOverRideLoad?childSecond?=?new?ExtendsOverRideLoad();??
  • ??????????
  • ????????//Override?publicFunction??
  • ????????childSecond.publicFunction();??
  • ??????????
  • ????????//overload?publicFunction??
  • ????????childSecond.publicFunction("overLoad");??
  • ????}??
  • }??


  • 多態?

    父類? Animal.java?

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


  • 多態實現?

    Java代碼??
  • /**?
  • ?*??
  • ?*/??
  • package?com.study.feature;??
  • ??
  • /**????
  • ?*??
  • ?*?@className?:Cat???
  • ?*?@package?:?com.study.feature??
  • ?*?@Description?:貓????
  • ?*?@author:lgf????
  • ?*?@date?:2012?三月?12??13:54:01???????????
  • ?*?@version?:?1.0?
  • ?*/??
  • public?class?Cat?extends?Animal{??
  • ????public?void?eat(){??
  • ????????System.out.println("eating?fish");??
  • ????}??
  • }??


  • Java代碼??
  • /**?
  • ?*??
  • ?*/??
  • package?com.study.feature;??
  • ??
  • /**????
  • ?*??
  • ?*?@className?:Dog???
  • ?*?@package?:?com.study.feature??
  • ?*?@Description?:狗????
  • ?*?@author:lgf????
  • ?*?@date?:2012?三月?12??13:55:38???????????
  • ?*?@version?:?1.0?
  • ?*/??
  • public?class?Dog?extends?Animal{??
  • ????public?void?eat(){??
  • ????????System.out.println("eating?Bone");??
  • ????}??
  • }??



  • 結果?

    Java代碼??
  • /**?
  • ?*??
  • ?*/??
  • package?com.study.feature;??
  • ??
  • /**????
  • ?*??
  • ?*?@className?:Main???
  • ?*?@package?:?com.study.feature??
  • ?*?@Description?:多態測試????
  • ?*?@author:lgf????
  • ?*?@date?:2012?三月?12??13:57:11???????????
  • ?*?@version?:?1.0?
  • ?*/??
  • public?class?Main?{??
  • ??????
  • ????public?static?void?main(String[]?args)?{??
  • ????????Animal?animal?=?null;??
  • ????????animal?=?new?Animal();??
  • ????????animal.eat();//eating??
  • ????????Animal?cat?=?new?Cat();??
  • ????????cat.eat();//eating?fish??
  • ????????Animal?dog?=?new?Dog();??
  • ????????dog.eat();//eating?Bone??
  • ????}??
  • }??



  • 例子2?

    Java代碼??
  • /**?
  • ?*??
  • ?*/??
  • package?com.study.feature;??
  • ??
  • /**????
  • ?*??
  • ?*?@className?:Father???
  • ?*?@package?:?com.study.feature??
  • ?*?@Description?:多態????
  • ?*?@author:lgf????
  • ?*?@date?:2012?三月?12??14:53:41???????????
  • ?*?@version?:?1.0?
  • ?*/??
  • public?class?Father?{??
  • ????public?void?functionOne(){??
  • ????????functionSecond();??
  • ????}??
  • ????public?void?functionSecond(){??
  • ????????System.out.println("Father?functionSecond");??
  • ????}??
  • }??


  • Java代碼??
  • /**?
  • ?*??
  • ?*/??
  • package?com.study.feature;??
  • ??
  • /**????
  • ?*??
  • ?*?@className?:Children???
  • ?*?@package?:?com.study.feature??
  • ?*?@Description?:測試????
  • ?*?@author:lgf????
  • ?*?@date?:2012?三月?12??14:55:15???????????
  • ?*?@version?:?1.0?
  • ?*/??
  • public?class?Children?extends?Father{??
  • ????public?void?functionSecond(){??
  • ????????System.out.println("Children?functionSecond");??
  • ????}??
  • ??????
  • ????public?static?void?main(String[]?args)?{??
  • ????????Father?c?=?new?Children();??
  • ????????c.functionOne();//Children?functionSecond??
  • ????}??
  • }?
  • 轉載于:https://www.cnblogs.com/caimuqing/p/5398415.html

    總結

    以上是生活随笔為你收集整理的java的三大特性,封装,继承,多态的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。