/*验证:
*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类型");
}
}
/*验证:
*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{
}
/*万用字符
*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类型");
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有