首页 > 编程语言 >Java之泛型系列--继承父类与实现多个接口(有示例)

Java之泛型系列--继承父类与实现多个接口(有示例)

时间:2024-02-10 16:33:47浏览次数:27  
标签:示例 -- void 接口 A1 之泛 sing com public

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

分享一个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();
}

实现类

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

 

标签:示例,--,void,接口,A1,之泛,sing,com,public
From: https://www.cnblogs.com/knifeblade/p/18012906

相关文章

  • Linux
    Linux:CentOS7.9一、Linux发展历史  Unix->Minix->Linux  狭义的Linux:Linuxkernel(Linux内核)  广义的Linux:GNU/Linux  GNU是一个自由操作系统项目,其目标是创建一个完全自由的操作系统。GNU的全称是“GNU'sNotUnix”,意思是“GNU不是Unix”。它由理查德·斯托曼......
  • 考研-初中数学再次启动
    目录必须要掌握的一些公式正方体的面积、体积公式长方形的面积公式三角尺的面积圆的周长、面积初中数学部分科学计数法近似数(准确数、精确度,精确位[个位、百位、十分位、百分位])是否有个分位?小练习整式用字母表示数用含有字母的式子填空练习题单项式判断是否是单项式的练习分别说......
  • Spring 基础
    Spring基础参考资料Spring的核心包括2个概念:控制反转(IOC)和面向切面(AOP)。我的SpringBoot学习之路!-知乎(zhihu.com)控制反转(IOC)的核心思想:把主动权交给用户。狂神说Java:《Spring5最新完整教程IDEA版》《SpringBoot最新教程IDEA版》开源项目:Spr......
  • 字符串StringBulider
    ......
  • 关于unity游戏如何查看方法名所属类名及函数
    各位,新年好啊废话不多说以set_HP为例这是方法名附件特征码,方便定位我们进行搜索(注:ca内存)在s位置进行指针搜索可以看到出现4个数据说明,方法名为set_HP的函数及其所属类名有4个我们以第4个为例转到可以看到他的附近是一堆指针我们以搜索到的指针为本在他偏移-8的地......
  • maven--插件的管理(pluginManagement)
     原文网址:​​maven--插件的管理(pluginManagement)_IT利刃出鞘的博客-CSDN博客​​简介说明本文介绍maven如何使用pluginManagement来管理插件(build标签中的plugins标签)。概述Maven使用 dependencyManagement对依赖进行管理,见:​​这里​​,与之类似地,Maven中还提供了一个......
  • 全基因组测序流程 | WGS pipeline
     创建conda环境,安装必要软件condacreate-nwgscondaactivatewgscondainstallbioconda::bwa 下载最佳reffastagcloudstoragecpgs://BUCKET_NAME/OBJECT_NAMESAVE_TO_LOCATIONgs://gcp-public-data--broad-references/hg38/v0/Homo_sapiens_assembly38.fastaR......
  • 字符串2
    思路......
  • Locust简单学习记录
    locust性能测试框架1、locust原理(感觉讲的很好,完全摘抄的,原地址:https://www.cnblogs.com/ywt798/p/16138472.html)  locust为什么能够识别写的代码和运行?locust基于两个类,继承两个类才能实现模拟用户行为:TaskSet类(模拟请求的行为,任务):locust里面的类,继承Task......
  • POJ--3764 The xor-longest Path(Trie)
    记录13:562024-2-10找到俩个点,获得最大的边权异或值。利用异或的性质,一个值被异或俩次相当于没有异或即axorbxorb=a所以先从顶点出发,获得每个点路径上的异或值,然后对这俩个值进行异或就获得了他们之间路径的异或值。获取从顶点到每个点路径上的异或值后,可以利用trie来......