原文网址:Java之泛型系列--继承父类与实现多个接口(有示例)_IT利刃出鞘的博客-CSDN博客
简介
本文介绍java如何用泛型表示继承父类并实现多个接口。
用泛型表示某个类是某个类的子类或者实现了接口的方法为:<T extends A & B & C>
- 用法1:全都是接口。
- 对于本例来说:A、B、C都是接口
- 用法2:继承父类+实现接口:第一个必须是类(表示继承),& 后面的只能是接口。
- 对于本例来说,A必须是类,B、C都是接口。
- JDK的示例:Double类的定义:public final class Double extends Number implements Comparable<Double>
用法1:泛型都是接口
接口A
package com.example.a;
public interface A {
void welcome();
}
接口B
package com.example.a;
public interface B {
void fly();
}
接口C
package com.example.a;
public interface C {
void sing();
}
实现类
package com.example.a;
public class A1 implements A,B,C{
@Override
public void welcome() {
System.out.println("A1:welcome");
}
@Override
public void fly() {
System.out.println("A1:fly");
}
@Override
public void sing() {
System.out.println("A1:sing");
}
}
泛型类
package com.example.a;
public class D<V extends A & B & C> {
private V v;
public void test() {
v.welcome();
v.fly();
v.sing();
}
public void setV(V v) {
this.v = v;
}
}
测试类
package com.example.a;
public class Demo {
public static void main(String[] argv) {
D<A1> d = new D<>();
A1 a1 = new A1();
d.setV(a1);
d.test();
}
}
测试结果
A1:welcome
A1:fly
A1:sing
用法2:泛型为父类+接口
接口B、接口C、泛型类、测试类都与上边一致。不一样的文件是:父类A、实现类A1。本处只贴出不一样的文件
父类A
package com.example.a;
public class A {
public void welcome() {
System.out.println("A:welcome");
}
}
实现类A1
package com.example.a;
public class A1 extends A implements B,C{
@Override
public void fly() {
System.out.println("A1:fly");
}
@Override
public void sing() {
System.out.println("A1:sing");
}
}
测试结果
A:welcome
A1:fly
A1:sing