1.泛型的继承包括:普通泛型的继承,抽象泛型的继承,接口的继承
注:其实他们的继承方式都一样,对于泛型的继承我们只要记住一些规则就可以了
①:泛型的继承分为保留继承和不保留继承。
a.保留继承又分为部分保留和全部保留====》子类也一定是泛型
b.不保留又分为具体类型继承,和不具体类型继承(相当于类型擦除,类似于Object类型)====》子类按需实现
子类的类型可以比父类更加丰富
②:属性及方法的类型随位置而定,可分为一些情况
1)子类重写方法的类型--->随父类而定
2)子类新增方法的类型--->随子类而定
3)子类中使用父类的属性--->随父类而定
4)子类中使用自己的属性--->随子类而定
下面是一个详细的实例:
public abstract class Father<T1,T2> {
T1 age;
public abstract void test(T2 name);
}
/**
* 保留,全部保留
* @param <T1>
* @param <T2>
*/
class C1<T1,T2> extends Father<T1,T2>{
@Override
public void test(T2 name) {
}}
/**
* 保留,部分保留
* @author 270830
* @param <T2>
*/
class C2<T2> extends Father<Integer,T2>{
@Override
public void test(T2 name) {
}}
/**
* 不保留,具体类型
*/
class C3 extends Father<Integer,String>{
@Override
public void test(String name) {
}}
/**
* 不保留,没有类型
* 等同于:class C4 extends Father<Object,Object>{}
*/
class C4 extends Father{
@Override
public void test(Object name) {
}}
class c5<T1,T2,T3,T4,T5> extends Father{
T3 t3;T4 t4;T5 t5;//可以自己使用自己的泛型类
@Override
public void test(Object name) {
}
}