泛型继承

Posted zhangyugeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了泛型继承相关的知识,希望对你有一定的参考价值。

1.泛型继承

package demo;

/**
 * 泛型继承
 * 1.全保留
 * 2.部分保留
 * 3.具体类型
 * 4.没有类型
 */
/*父类一般定义为抽象类*/
public abstract class Father<T1,T2> {
    T2 name;
    public abstract void test(T1 age); //抽象方法只定义方法,没有方法体
}


//全保留
//子类可以继续添加泛型类型class c1<T1,T2,A,B>    富二代
class c1<T1,T2> extends Father<T1,T2>{
    
    @Override
    public void test(T1 age) {
        //this.name=0;    全保留,不能这样用
        
    }    
}

//部分保留
class c2<T1> extends Father<T1,String>{

    @Override
    public void test(T1 age) {
        //this.name="222";        //引用父类属性,类型随父类而定
    }    
}
//具体类型
class c3 extends Father<Integer,String>{

    @Override
    public void test(Integer age) {
            
    }
}
//没有类型
//泛型擦除
class c4 extends Father{

    @Override
    public void test(Object age) {
        
    }
}

 2.通配符

    <?>(用于变量或形参)

    List<?> list=new ArrayList<String>();

    List<?> list=new ArrayList<Long>();

 

3.泛型上限

    class Test<T extends Fruit>{ }      //Fruit 有多个子类  <=

    Test的T不能是Fruit的父类,只能用于小于Fruit的子类。

    public static void test(List<? extends Fruit> list) {   }   //方法

    List<? extends Fruit> list=new ArrayList<apple>();

 

4.泛型下限

  super

    public static void test(List<? super Fruit> list) {   }   //方法

    假如Fruit没有其他父类,用的类型定义只能Object.

 

5.泛型嵌套

以上是关于泛型继承的主要内容,如果未能解决你的问题,请参考以下文章

对于泛型+非泛型,是不是/为啥需要从两次继承 WebViewPage?

C#泛型 类型约束

c++ 泛型 模板继承问题

ADA中的多类型继承通过泛型mixins

unity的C#学习——泛型的创建与继承泛型集合类泛型中的约束和反射

这个嵌套类构造函数片段可以应用于泛型类吗?