package 第二天;
//泛型子类>=父类
//子类重写方法的类型随父类而定
//子类继承父类的类型随父类而定
//子类使用自己的属性及方法随自己而定
//子类可以自己另外加泛型
//若父类指定具体类型子类可加可不加泛型
//若父类存在未指定类型,子类必须存在对应类型
//泛型的擦除:使用泛型未指定具体类型 类似于Object 不完全等同于Object
//未指定具体类型/泛型的擦除 编译不会检查类型
//泛型父类指定具体类型:子类可以是泛型也可以是非泛型,若泛型父类未指定具体类型,则一定是泛型子类
//接口类似于该类
public abstract class Father<T1 extends String,T2> //若父类泛型保留,则子类泛型也保留 子类:富二代
{
T1 age;
public abstract void test(T2 name);
}
//class son1 extends Father<Object,Object>
//{
//
@Override
//
public void test(Object name)
//
{
//
}
//}
class son2 extends Father //不指定类型就是Object
{
@Override
public void test(Object name)
{
}
}
class son3 extends Father<String,Integer>
{
@Override
public void test(Integer name)
{
//this.age
}
}
class son4<T1,T2> extends Father<String,Integer> //富二代,泛型子类<>可加可不加
{
@Override
public void test(Integer name)
{
}
}
class son5<T1 extends String> extends Father<T1,Integer> //<T1>必须保留
{
@Override
public void test(Integer name)
{
}
}
class son6<T2,T1 extends String,A,B> extends Father<T1,T2>
{
@Override
public void test(T2 name)
{
}
}
转载请注明原文地址: https://ju.6miu.com/read-660134.html