好程式設計師Java培訓之泛型繼承原理與用法詳解
今天 好程式設計師Java 培訓給大家分享一篇關於 Java 泛型繼承原理與用法詳解,結合例項形式分析了 Java 泛型繼承的相關原理與實現技巧,下面我們一起來看一下吧。
一、
當建立了帶泛型宣告的介面、父類之後,可以為該介面建立實現類,或從該父類來派生子類,但值得指出的是,當使用這些介面、父類時不能再包含型別形參。
如果使用泛型類時沒有傳入實際的型別引數, Java 編譯器可能發出警告:使用了未經檢查或不安全的操作——這就是泛型檢查的警告。
二、實戰——傳入實際的型別引數
public class A1 extends Apple<String> {
// 正確重寫了父類的方法,返回值
// 與父類 Apple<String> 的返回值完全相同
public String getInfo() {
return " 子類 " + super.getInfo();
}
/*
// 下面方法是錯誤的,重寫父類方法時返回值型別不一致
public Object getInfo()
{
return " 子類 ";
}
*/
}
三、實戰——沒傳入實際的型別引數
public class A2 extends Apple {
// 重寫父類的方法
public String getInfo() {
// super.getInfo() 方法返回值是 Object 型別,
// 所以加 toString() 才返回 String 型別
return super.getInfo().toString();
}
}
四、並不存在泛型類
1 點睛
雖然可以把ArrayList<String> 類當成 ArrayList 的子類,事實上 ArrayList<String> 類也確實是一種特殊的 ArrayList 類,這個 ArrayList<String> 物件只能新增 String 物件作為集合元素。但實際上,系統並沒有為 ArrayList<String> 生成新的 class 檔案,而且也不會把 ArrayList<String> 當成新類來處理。
實際上,泛型對其所有可能的型別引數,都具有同樣的行為,從而可以把相同的類被當成許多不同的類來處理。與此完全一致的是,類的靜態變數和方法也在所有的例項間共享,所以在靜態方法、靜態初始化、或者靜態變數的宣告和初始化中不允許使用型別形參。
系統中並不會真正生成泛型類,所以instanceof 運算子後不能使用泛型類。
2 實戰
public class R<T>
{
// 下面程式碼錯誤,不能在靜態變數宣告中使用型別形參
// static T info;
T age;
public void foo(T msg){}
// 下面程式碼錯誤,不能在靜態方法宣告中使用型別形參
// public static void bar(T msg){}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2725849/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Python培訓之詳解eval好與壞程式設計師Python
- 好程式設計師Python培訓分享For迴圈用法詳解程式設計師Python
- 好程式設計師Java培訓分享BigDecimal的用法程式設計師JavaDecimal
- 好程式設計師Java培訓分享For迴圈詳解程式設計師Java
- 好程式設計師Java培訓分享註解與反射原理說明程式設計師Java反射
- 好程式設計師Python培訓之Django中介軟體基礎用法詳解程式設計師PythonDjango
- 好程式設計師Java培訓分享Spring Ioc的原理程式設計師JavaSpring
- 好程式設計師web前端培訓分享JavaScript學習筆記閉包與繼承程式設計師Web前端JavaScript筆記繼承
- 好程式設計師Java培訓分享Java動態代理機制詳解程式設計師Java
- 好程式設計師Python培訓分享Django中介軟體基礎用法詳解程式設計師PythonDjango
- 好程式設計師分享JavaScript六種繼承方式詳解程式設計師JavaScript繼承
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java
- 好程式設計師Java培訓分享Java之反射技術程式設計師Java反射
- 好程式設計師Java培訓分享SpringBoot -自動配置原理程式設計師JavaSpring Boot
- 好程式設計師Java培訓分享之RMI與RPC的區別程式設計師JavaRPC
- 好程式設計師Java培訓分享Java程式設計師技能提升指南程式設計師Java
- 好程式設計師Java培訓Java程式設計師必學技術程式設計師Java
- 好程式設計師Java教程分享Java難點解析之泛型程式設計師Java泛型
- 好程式設計師Java培訓分享SpringBoot -YAML程式設計師JavaSpring BootYAML
- 好程式設計師Java培訓分享Java EE與Java的區別程式設計師Java
- 好程式設計師Python培訓分享資料型別Set集合例項詳解程式設計師Python資料型別
- 好程式設計師Java培訓Java最常用的五個註解程式設計師Java
- 好程式設計師Java培訓分享Java程式設計師常用的工具類庫程式設計師Java
- 好程式設計師Java培訓分享20個Java程式設計師基礎題程式設計師Java
- 好程式設計師Java培訓分享如何快速入門Java程式設計程式設計師Java
- Java程式設計師培訓班哪家比較好Java程式設計師
- 好程式設計師Java培訓分享maven-概述程式設計師JavaMaven
- 好程式設計師Python培訓分享入門之元組列表字典詳解程式設計師Python
- 好程式設計師Java培訓分享Java之命名、標示符、變數程式設計師Java變數
- 好程式設計師Java培訓分享Java面試題之Java集合篇三程式設計師Java面試題
- 好程式設計師Java培訓分享Java教程垃圾回收與演算法程式設計師Java演算法
- 好程式設計師Java培訓之類的例項化步驟程式設計師Java
- 好程式設計師Java培訓分享如何快速入門Java程式設計師Java
- 好程式設計師Java培訓分享Java包是什麼?程式設計師Java
- 好程式設計師Java培訓分享Java多執行緒程式設計師Java執行緒
- 好程式設計師ava培訓分享void的用法和意義程式設計師
- 好程式設計師Java培訓分享本地快取如何設計程式設計師Java快取
- 好程式設計師Java培訓分享學Java程式設計要注意什麼程式設計師Java