千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

當(dāng)前位置:首頁(yè)  >  IT問(wèn)答庫(kù)  >  Java基礎(chǔ)知識(shí)

Java泛型繼承原理與用法

發(fā)布:Java培訓(xùn) 2022-01-20 15:16

Java泛型繼承原理與用法

推薦答案

      當(dāng)創(chuàng)建了帶泛型聲明的接口、父類(lèi)之后,可以為該接口創(chuàng)建實(shí)現(xiàn)類(lèi),或從該父類(lèi)來(lái)派生子類(lèi),但值得指出的是,當(dāng)使用這些接口、父類(lèi)時(shí)不能再包含類(lèi)型形參。

      如果使用泛型類(lèi)時(shí)沒(méi)有傳入實(shí)際的類(lèi)型參數(shù),Java編譯器可能發(fā)出警告:使用了未經(jīng)檢查或不安全的操作——這就是泛型檢查的警告。

      實(shí)戰(zhàn)——傳入實(shí)際的類(lèi)型參數(shù)

      public class A1 extends Apple<String> {

      // 正確重寫(xiě)了父類(lèi)的方法,返回值

      // 與父類(lèi)Apple<String>的返回值完全相同

      public String getInfo() {

      return "子類(lèi)" + super.getInfo();

      }

      /*

      // 下面方法是錯(cuò)誤的,重寫(xiě)父類(lèi)方法時(shí)返回值類(lèi)型不一致

      public Object getInfo()

      {

      return "子類(lèi)";

      }

      */

      }

      實(shí)戰(zhàn)——沒(méi)傳入實(shí)際的類(lèi)型參數(shù)

      public class A2 extends Apple {

      // 重寫(xiě)父類(lèi)的方法

      public String getInfo() {

      // super.getInfo()方法返回值是Object類(lèi)型,

      // 所以加toString()才返回String類(lèi)型

      return super.getInfo().toString();

      }

      }

      并不存在泛型類(lèi)

      1、點(diǎn)睛

      雖然可以把ArrayList<String>類(lèi)當(dāng)成ArrayList的子類(lèi),事實(shí)上ArrayList<String>類(lèi)也確實(shí)是一種特殊的ArrayList類(lèi),這個(gè)ArrayList<String>對(duì)象只能添加String對(duì)象作為集合元素。但實(shí)際上,系統(tǒng)并沒(méi)有為ArrayList<String>生成新的class文件,而且也不會(huì)把ArrayList<String>當(dāng)成新類(lèi)來(lái)處理。

      實(shí)際上,泛型對(duì)其所有可能的類(lèi)型參數(shù),都具有同樣的行為,從而可以把相同的類(lèi)被當(dāng)成許多不同的類(lèi)來(lái)處理。與此完全一致的是,類(lèi)的靜態(tài)變量和方法也在所有的實(shí)例間共享,所以在靜態(tài)方法、靜態(tài)初始化、或者靜態(tài)變量的聲明和初始化中不允許使用類(lèi)型形參。

      系統(tǒng)中并不會(huì)真正生成泛型類(lèi),所以instanceof運(yùn)算符后不能使用泛型類(lèi)。

      2、實(shí)戰(zhàn)

      public class R<T>

      {

      // 下面代碼錯(cuò)誤,不能在靜態(tài)變量聲明中使用類(lèi)型形參

      // static T info;

      T age;

      public void foo(T msg){}

      // 下面代碼錯(cuò)誤,不能在靜態(tài)方法聲明中使用類(lèi)型形參

      // public static void bar(T msg){}

      }

      以上就是關(guān)于Java泛型繼承原理與用法詳解的全部?jī)?nèi)容。

最新問(wèn)答資訊

01 unity用什么編程語(yǔ)言?unity學(xué)習(xí)難度大嗎

學(xué)習(xí) unity 語(yǔ)言
6020 人關(guān)注

02 python容易學(xué)嗎?學(xué)好python有什么好處?

學(xué)習(xí) python 工作 培訓(xùn)
5389 人關(guān)注

03 html是什么語(yǔ)言?html學(xué)習(xí)難嗎?

學(xué)習(xí) html 語(yǔ)言 可以
5062 人關(guān)注

04 c語(yǔ)言難學(xué)嗎?c語(yǔ)言學(xué)好要多久?

語(yǔ)言 技術(shù) 學(xué)習(xí)
4733 人關(guān)注

06 學(xué)好平面設(shè)計(jì)要多久?報(bào)速成班靠譜嗎?

平面 設(shè)計(jì) 學(xué)習(xí) 時(shí)間
4238 人關(guān)注

相關(guān)問(wèn)題

計(jì)算機(jī)前端和后端區(qū)別,到底該學(xué)哪一個(gè)?

互聯(lián)網(wǎng)行業(yè)的發(fā)展速度很快,有關(guān)市場(chǎng)上對(duì)于it行業(yè)的人才需求量越...

java和php的區(qū)別是什么?哪一個(gè)更難一些?

有很多零基礎(chǔ)的小白想要去學(xué)習(xí)編程技術(shù),那么可以考慮一下java和...

java與java script的區(qū)別有哪些?

相信大多數(shù)同學(xué)對(duì)java、java script都不會(huì)陌生,二者都是編程語(yǔ)...

java中什么是繼承?

繼承的特點(diǎn):只需明確一點(diǎn),java只支持單繼承,不支持多繼承,但...

java byte取值范圍是什么?

同學(xué)您好,java byte取值范圍是什么?針對(duì)這個(gè)問(wèn)題可以看看下面的...

javascript和java有什么區(qū)別

1)基于對(duì)象和面向?qū)ο螅篔ava是一種真正的面向?qū)ο蟮恼Z(yǔ)言,即使是...

測(cè)一測(cè)
你知道多少I(mǎi)T梗

主站蜘蛛池模板: 精品国产一区二区三区| 激情亚洲一区国产精品| 亚洲av无码一区二区三区四区| 无码毛片一区二区三区视频免费播放| 尤物精品视频一区二区三区 | 亚洲av乱码一区二区三区按摩| 在线视频一区二区三区三区不卡 | 国产精品免费一区二区三区| 国产aⅴ一区二区三区| 人妻少妇精品一区二区三区| 国产AV午夜精品一区二区三| 国产在线aaa片一区二区99| 手机看片福利一区二区三区| 免费一区二区无码东京热| 国产福利91精品一区二区三区| 久久国产免费一区| 无码国产伦一区二区三区视频 | 人妻少妇精品视频三区二区一区 | 波多野结衣av高清一区二区三区| 国产一区二区三区免费看| 国产高清在线精品一区二区| 无码精品人妻一区二区三区影院| 国模吧无码一区二区三区| 久久se精品一区二区国产| 福利国产微拍广场一区视频在线| 精品福利一区二区三区| 亚洲日本乱码一区二区在线二产线 | 精品国产免费一区二区三区香蕉| 制服丝袜一区在线| 亚洲第一区在线观看| 亚洲中文字幕在线无码一区二区| 国产一区二区精品久久91 | 免费一区二区三区| 日韩在线一区视频| 日本高清不卡一区| 精品一区二区三区免费毛片| 3d动漫精品一区视频在线观看| 日本一区二区三区在线视频观看免费| 国产精品日本一区二区在线播放| 国产精品资源一区二区| 精品香蕉一区二区三区|