package cn.Douzi.gen02;
/*
* 泛型父类
* 1. 如果父类是泛型类,子类只能是泛型子类, 保留父类的泛型
* 2. 不保留父类泛型 ---> 子类按需实现即可
* 3. 子类方法的类型 --> 随父类而定
*
* 4. 子类重写方法的类型 --> 随父类而定
* 5. 子类使用父类的属性 --> 随父类而定
*
* 6. 子类新增方法的类型 --> 随子类而定
* 7. 子类中使用自己的属性 -->随子类而定
*
* 8. 属性及方法 类型 --> 随位置而定
*/
public abstract class Father<T1, T2> {
T1 age;
public abstract void test(T2 name);
}
//保留
//1)、全部保留
//2)、部分保留
//不保留
//1)、具体类型
//2)、没有类型 擦除 Object
//如果父类保留, 子类也保留 --> 泛型子类
class C1<T1, T2, A, B> extends Father<T1, T2> {
A Sex;
@Override
public void test(T2 name) {
// TODO Auto-generated method stub
// this.age -- > T1, 随父类
}
public void test2(T1 a) {
}
}
class C2<T2, A, B> extends Father<Integer, T2> {
@Override
public void test(T2 name) {
// TODO Auto-generated method stub
// this.age --> Integer
}
}
//泛型只针对引用类型
class C3 extends Father<Integer, String> {
@Override
public void test(String name) {
// TODO Auto-generated method stub
// this.age --> Integer
}
}
class C4 extends Father {
@Override
public void test(Object name) {
// TODO Auto-generated method stub
// this.age --> Object
}
}