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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java的多态性学习代码

發(fā)布時(shí)間:2025/3/20 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java的多态性学习代码 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 1、下面的代碼是定義一個(gè)抽象類Shape,然后Circel和Square類繼承Shape類,實(shí)現(xiàn)Shape中的方法MianJi();??
  • ??
  • public?class?ShapeDemo?{??
  • ????public?static?void?main(String[]?args)?{??
  • ??????
  • ????//向上轉(zhuǎn)型,創(chuàng)建一個(gè)父類Shape的引用,讓引用指向子類??
  • ????????Shape?shape?=??new?Square(2);??
  • ??????????
  • ????????//如果shape引用的對(duì)象是Square類型的對(duì)象,返回true,否則為false??
  • ????????if(shape?instanceof?Square)?{??
  • ??????????????
  • ????????????//將shape對(duì)象想下轉(zhuǎn)型為子類的對(duì)象??
  • ????????????Square?square?=?(Square)shape;??
  • ??????????????
  • ????????????//在show方法中,以子類對(duì)象sqaure為參數(shù),求出求出子類的面積??
  • ????????????show(square);??
  • ????????}??
  • ???????????
  • ????????//向上轉(zhuǎn)型,創(chuàng)建父類的引用,指向子類Circel的對(duì)象??
  • ????????Shape?shape1?=?new?Circle(2);??
  • ????????//在show方法中,以父類Shape1參數(shù)調(diào)用方法,求出子類的面積??
  • ????????show(shape1);??
  • ??????????
  • ??????????
  • ??????????
  • ??????????
  • ??????????
  • }??
  • ??????
  • //定義靜態(tài)方法show來調(diào)用父類或則子類的MianJi()方法??
  • public?static?void?show(Shape?s)?{??
  • ????????s.MianJi();??
  • }??
  • ??
  • }??
  • ??
  • //定義一個(gè)抽象類Shpe,給出抽象方法MianJi,不給出具體實(shí)現(xiàn)??
  • abstract?class?Shape{??
  • ????float?r;??
  • ??????
  • ????abstract?void?MianJi();??
  • }??
  • ??
  • ??
  • ??????
  • //定義一個(gè)Square正方形類,繼承父類Shape類,給出父類MainJi方法的具體實(shí)現(xiàn)??
  • class?Square?extends?Shape{??
  • ????//定義參數(shù)邊長(zhǎng)??
  • ????float?r;??
  • ??????
  • ????//默認(rèn)參數(shù)構(gòu)造方法來初始化Square,??
  • ????Square(float?r){??
  • ????????super();??
  • ????????this.r?=?r;??
  • ????}??
  • ??????
  • ????//求出正方形的面積??
  • ????void??MianJi()?{??
  • ????????System.out.println(?"我是正方形,面積是:"?+r?*?r);??
  • ????}??
  • }??
  • ??
  • //定義圓類,繼承父類Shape??
  • class?Circle?extends?Shape{??
  • ????//定義參數(shù)半徑??
  • ????float?r;??
  • ??????
  • ????//構(gòu)造方法初始化??
  • ????Circle(float?r){??
  • ????????super();??
  • ????????this.r?=?r;??
  • ????}??
  • ??????
  • ????//求出圓的面積??
  • ????void?MianJi(){??
  • ????????System.out.println("我是圓形,面積是:"?+3.14?*?r?*r);??
  • ????} ?
  • }
  • 運(yùn)行結(jié)果:??
  • 我是正方形,面積是:4.0??
  • 我是圓形,面積是:12.56 ?


  • 2.定義一個(gè)Animal父類,子類Cat和Dog繼承Animal類??
  • public?class?Demo{??
  • ????public?static?void?main(String[]?args)?{??
  • ??????show(new?Cat());??//?以?Cat?對(duì)象調(diào)用?show?方法??
  • ??????show(new?Dog());??//?以?Dog?對(duì)象調(diào)用?show?方法??
  • ??????????????????
  • ??????Animal?a?=?new?Cat();??//?向上轉(zhuǎn)型????
  • ??????a.eat();???????????????//?調(diào)用的是?Cat?的?eat??
  • ??????Cat?c?=?(Cat)a;????????//?向下轉(zhuǎn)型????
  • ??????c.work();????????//?調(diào)用的是?Cat?的?work??
  • ??????????
  • ??}????
  • ??????????????
  • ????public?static?void?show(Animal?a)??{??
  • ??????a.eat();????
  • ????????//?類型判斷??
  • ????????if?(a?instanceof?Cat)??{??//?貓做的事情???
  • ????????????Cat?c?=?(Cat)a;????
  • ????????????c.work();????
  • ????????}???
  • ????else?if?(a?instanceof?Dog)?{?//?狗做的事情???
  • ????????????Dog?c?=?(Dog)a;????
  • ????????????c.work();????
  • ????????}????
  • ????}????
  • }??
  • ???
  • //定義一個(gè)抽象Animal類,為父類??
  • abstract?class?Animal?{????
  • ????//定義一個(gè)抽象的父類eat方法,子類必須具體實(shí)現(xiàn)這個(gè)方法??
  • ????abstract?void?eat();????
  • }????
  • ????
  • //繼承父類Animal??
  • class?Cat?extends?Animal?{????
  • ????//實(shí)現(xiàn)父類的抽象方法??
  • ????public?void?eat()?{????
  • ????????System.out.println("我是貓,?吃魚");????
  • ????}????
  • ????//定義子類自己的方法??
  • ????public?void?work()?{????
  • ????????System.out.println("我是貓,抓老鼠");????
  • ????}????
  • }????
  • ????
  • //繼承父類Animal,實(shí)現(xiàn)自己的方法??
  • class?Dog?extends?Animal?{????
  • ????//實(shí)現(xiàn)父類的方法??
  • ????public?void?eat()?{????
  • ????????System.out.println("我是狗,吃骨頭");????
  • ????}????
  • ????//定義自己的方法??
  • ????public?void?work()?{????
  • ????????System.out.println("我是狗,看家");????
  • ????}????
  • }

  • 我是貓,?吃魚??
  • 我是貓,抓老鼠??
  • 我是狗,吃骨頭??
  • 我是狗,看家??
  • 我是貓,?吃魚??
  • 我是貓,抓老鼠 ?

  • 總結(jié)

    以上是生活随笔為你收集整理的java的多态性学习代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。