原文網(wǎng)址:Java之泛型系列--繼承父類與實現(xiàn)多個接口(有示例)_IT利刃出鞘的博客-CSDN博客
簡介
本文介紹java如何用泛型表示繼承父類并實現(xiàn)多個接口。
用泛型表示某個類是某個類的子類或者實現(xiàn)了接口的方法為:<T extends A & B & C>?
用法1:全都是接口。
對于本例來說:A、B、C都是接口
用法2:繼承父類+實現(xiàn)接口:第一個必須是類(表示繼承),& 后面的只能是接口。
對于本例來說,A必須是類,B、C都是接口。
JDK的示例:Double類的定義:public final class Double extends Number implements Comparable<Double>
分享一個Java技術星球:https://learn.skyofit.com/
用法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();
}
實現(xiàn)類
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、實現(xiàn)類A1。本處只貼出不一樣的文件
父類A
package com.example.a;
public class A {
? ? public void welcome() {
? ? ? ? System.out.println("A:welcome");
? ? }
}
實現(xiàn)類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