原文网址: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