java继承与接口中的泛型介绍

package com.whl.gen03;
/**
 * 父类为泛型类
 * 1.属性
 * 2.方法
 * 不能子类擦除,父类泛型
 * @author Wanghualiang
 **/
public abstract class Father<T> {
	T name;

	public abstract void test(T t);
	 
}
/**
 * 子类声明时指定具体类型
 * 属性类型为具体类型
 * 方法同理
 * @author Wanghualiang
 *
 */
class Child extends Father<String>{
	String t2;
	@Override
	public void test(String t) {
		// TODO Auto-generated method stub
		
	}
}
/**
 * 子类为泛型类
 * child2<T1> Father<T1>
 * child2<T1,T> Father<T1>
 * child2<T1,T2> Father<T1,T2>
 * child2<T2,T1> Father<T2,T1>
 * 以上是对的
 * child2<T1> Father<T>
 * 是错的
 * 子类泛型数要大于等于父类泛型数
 * 如果等于,名称要一样,个数要一样,但位置可以不一样
 * @author Wanghualiang
 *
 * @param <T1>
 */
class Child2 <T1,T> extends Father<T1>{
	public void test(T1 t) {
		// TODO Auto-generated method stub
		
	}
	
}
/**
 * 子类为泛型,父类不指定类型,使用Object替换,泛型的擦除
 * @author Wanghualiang
 *
 * @param <T>
 */
class Child3<T> extends Father{
	T name;
	@Override
	public void test(Object t) {
		// TODO Auto-generated method stub	
	}
	
}
/**
 * 子类与父类同时擦除
 * @author Wanghualiang
 *
 */
class Child4 extends Father{
	String name;//泛型T不能使用了
	@Override
	public void test(Object t) {
		// TODO Auto-generated method stub
		
	}
	
}
//
要么同 时擦除,要么子类大于等于父类的类型
/**
* 错误:子类擦除,父类使用泛型 * @author Wanghualiang * */class Child5 extends Father<T>{String name;@Overridepublic void test(T t) {// TODO Auto-generated method stub}}*属性:在子类中随子类而定,

 * 在父类中随父类而定

public abstract class Father<T> {
T name;
public abstract void test(T t);
 
}

class Child2 <T1,T> extends Father<String>{
Integer name1;
@Override
public void test(String t) {
// TODO Auto-generated method stub
this.name//类型为String

}

}

class Child2 <T1,T> extends Father<String>{
Integer name;
@Override
public void test(String t) {
// TODO Auto-generated method stub
this.name//类型为Integer

}

}

可见父类中的属性与子类中的属性同名则类型会被覆盖掉

 *重写方法:
 *随父类而定,因为子类中的方法是父类方法的实现,父类方法已经有了定义
 *如下是错的
 *class Child2 <T1,T> extends Father<T1>{
public void test(T t) {
// TODO Auto-generated method stub

}

}
 *
 *如果父类擦除了,则默认Object类型
 *如class Child2 <T1,T> extends Father{
public void test(Object t) {
// TODO Auto-generated method stub

}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值