码迷,mamicode.com
首页 > 其他好文 > 详细

泛型(四)——泛型类型的继承规则

时间:2015-08-03 18:18:02      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

  在使用泛型类时,需要了解一些有关继承和子类型的准则。子类继承父类的泛型要么子类和父类都不用泛型,要么子类大于等于父类类型。而属性类型:在父类中,随父类而定,在子类中,随子类而定;重写方法:随父类而定。

package generic;
/**
 * 泛型类继承规则:
 * 要么同时擦除,要么子类大于等于父类类型
 * 1.属性类型
 *     在父类中,随父类而定
 *  在子类中,随子类而定
 * 2.方法重写
 *     随父类而定
 * @author 堕落梦醒
 *
 * @param <T>
 */
public abstract class Father<T> {
    T name;
    public abstract void test(T name);
}

/**
 * 子类声明为具体类型(具体类型大于泛型)
 * 属性类型为具体类型
 * 方法同理
 * @author 堕落梦醒
 */
class Child1 extends Father<Integer>{

    @Override
    public void test(Integer name) {
        
    }
}

/**
 * 子类为泛型,类型在使用时确定(子类有两个,大于父类一个)
 * @author 堕落梦醒
 *
 * @param <T>
 */
class Child2<T,T1> extends Father<T>{

    @Override
  //重写的方法随父类
public void test(T name) { } } /** * 子类为泛型,父类不指定类型,使用Object替代(子类一个,父类没有) * @author 堕落梦醒 * * @param <T> */ class Child3<T> extends Father{ @Override public void test(Object name) { } } /** * 子类与父类同时擦除,用Object替代 * @author 堕落梦醒 * */ class Child4 extends Father{ @Override public void test(Object name) { } } /** * 子类擦除,父类泛型,这样是错误的(子类的小于父类) * @author 堕落梦醒 class Child5 extends Father<T>{ @Override public void test(Object name) { } } */

 

参考资料:尚学堂 java300集视频(117集)

泛型(四)——泛型类型的继承规则

标签:

原文地址:http://www.cnblogs.com/duoluomengxing/p/4699631.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!