91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java數組、泛型、集合在多態中的使用及對比

發布時間:2020-09-08 09:07:06 來源:腳本之家 閱讀:126 作者:小z同學 欄目:編程語言

我們在使用數組,泛型集合的過程中不可避免的會碰到多態,或者說什么情況下能如何使用父數組引用子數組(集合、泛型)呢?

數組在多態中的使用

元素為父類型的數組引用可指向元素為子類型的數組對象

當數組被調用時由當前引用確定數組元素的類型

當元素為父類型的數組引用指向了元素為子類型的數組對象時,不可通過父類型的數組引用向集合加入除子類型及其下層級的之外的元素(可通過編譯,運行過程出錯)

/*驗證:
 *animals和dogs可以引用同一個數組
 *當animals引用數組時,數組元素為Animal類型
 *當dogs引用數組時,數組元素為Dog類型
*/
public class Animal{
  private void showClass(){
    System.out.println("數組元素為Animal類型");
  }
  public static void main(String[] args){
    //animals和dogs可以引用同一個數組
    Dog[] dogs = {new Dog(), new Dog()};
    Animal[] animals = dogs;
    //當animals引用數組時,數組元素為Animal類型
    animals[0].showClass();  
    //當dogs引用數組時,數組元素為Dog類型
    dogs[0].showClass();
    //不可通過父類型的數組引用向集合加入除子類型及其下層級的之外的元素(可通過編譯,運行過程出錯)
    animals[0] = new Animal(); 
  }
}
class Dog extends Animal{
  public void showClass(){
    System.out.println("數組元素為Dog類型");
  }
}

泛型在多態中的使用

ArrayList<父類型>無法引用ArrayList<子類型>

/*驗證:
 *animals無法引用dogs數組
 *
*/
import java.util.*;
public class Animal{
  public static void main(String[] args){
    //animals無法引用dogs數組
    ArrayList<Dog> dogs = new ArrayList<Dog>(); 
    ArrayList<Animal> animals = dogs;  /* 無法通過編譯 */
  }
}
class Dog extends Animal{
}

為了彌補泛型的缺陷,java引入了一種“萬用字符”——ArrayList<? extends object>

此類型集合可引用任何參數上繼承、實現了參數類型(包括參數類型本身)的集合

/*萬用字符
 *animals可以引用dogs集合
 *當animals引用集合時,集合元素為Dog類型
 *當dogs引用集合時,集合元素為Dog類型
 *無法通過animals對集合進行修改
 */
import java.util.*;
public class Animal{
  public void showClass(){
    System.out.println("集合元素為Animal類型");
  }
  public static void main(String[] args){
    //animals可以引用dogs數組
    ArrayList<Dog> dogs = new ArrayList<Dog>(); 
    dogs.add(new Dog());
    ArrayList<? extends Animal> animals = dogs;  
    //當animals引用集合時,集合元素為Dog類型
    animals.get(0).showClass();
    //當dogs引用集合時,集合元素為Dog類型
    dogs.get(0).showClass();
    //無法通過animals對集合進行修改(無法通過編譯)
    //animals.add(new Dog());
  }
}
class Dog extends Animal{
  public void showClass(){
    System.out.println("集合元素為Dog類型");
  }
}

集合在多態中的使用

當然List<object>集合可引用ArrayList<object>集合

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌恰县| 沙洋县| 富蕴县| 南漳县| 剑河县| 苍梧县| 新密市| 南丰县| 通州区| 衡阳市| 方正县| 嘉义县| 绵竹市| 吉林省| 古丈县| 彭阳县| 汤原县| 越西县| 微博| 荔浦县| 佛学| 浦东新区| 冕宁县| 高陵县| 塔城市| 南投市| 泾阳县| 兴安县| 金华市| 垣曲县| 石楼县| 南江县| 忻城县| 清水河县| 安顺市| 耒阳市| 牡丹江市| 土默特右旗| 江安县| 庆元县| 惠来县|