实例讲解-泛型操作范例

本文通过实例演示了如何使用泛型和接口来实现灵活而规范的编程结构。具体包括定义了一个标识接口Info,并通过泛型类Person实现了不同类型的个人信息表示。

1,题目要求:

2,本实例主要采用知识点

  关联,泛型,接口。

3,具体内容

  现在假设要表示一个让信息:

    1)基本信息

    2)联系方式。

  在此时,肯定要设计一个接口,因为只有实现了此接口的类才应该表示人的信息。

interface Info{        // 只有此接口的子类才是表示人的信息
}

  此接口定义完成,但是在此接口中没有任何方法,所以此时,这个接口称为标识接口。之后定义人的类,人的类中只要是此接口子类就可以表示人的信息。

class Contact implements Info{    // 表示联系方式
    private String address ;    // 联系地址
    private String telphone ;    // 联系方式
    private String zipcode ;    // 邮政编码
    public Contact(String address,String telphone,String zipcode){
        this.setAddress(address) ;
        this.setTelphone(telphone) ;
        this.setZipcode(zipcode) ;
    }
    public void setAddress(String address){
        this.address = address ;
    }
    public void setTelphone(String telphone){
        this.telphone = telphone ;
    }
    public void setZipcode(String zipcode){
        this.zipcode = zipcode ;
    }
    public String getAddress(){
        return this.address ;
    }
    public String getTelphone(){
        return this.telphone ;
    }
    public String getZipcode(){
        return this.zipcode ;
    }
    public String toString(){
        return "联系方式:" + "\n" +
                "\t|- 联系电话:" + this.telphone + "\n" + 
                "\t|- 联系地址:" + this.address + "\n" + 
                "\t|- 邮政编码:" + this.zipcode ;
    }
};
class Introduction implements Info{
    private String name ;        // 姓名
    private String sex ;        // 性别
    private int age ;            // 年龄
    public Introduction(String name,String sex,int age){
        this.setName(name) ;
        this.setSex(sex) ;
        this.setAge(age) ;
    }
    public void setName(String name){
        this.name = name ;
    }
    public void setSex(String sex){
        this.sex = sex ;
    }
    public void setAge(int age){
        this.age = age ;
    }
    public String getName(){
        return this.name ;
    }
    public String getSex(){
        return this.sex ;
    }
    public int getAge(){
        return this.age ;
    }
    public String toString(){
        return "基本信息:" + "\n" +
                "\t|- 姓名:" + this.name + "\n" + 
                "\t|- 性别:" + this.sex + "\n" + 
                "\t|- 年龄:" + this.age ;
    }
};
class Person<T extends Info>{    //表示这里的泛型必须是Info的子类,也就是说,在这个例子中,必须是Info接口的子类Introduction或者Contact类作为泛型,才能使用这个人的类,表示人的信息。
    private T info ;
    public Person(T info){        // 通过构造方法设置信息属性内容
        this.setInfo(info);
    }
    public void setInfo(T info){
        this.info = info ;
    }
    public T getInfo(){
        return this.info ;
    }
    public String toString(){    // 覆写Object类中的toString()方法
        return this.info.toString() ;
    }
};

  先将联系方式作为基本信息:

public class GenericsDemo32{
    public static void main(String args[]){
        Person<Contact> per = null ;        // 声明Person对象
        per = new Person<Contact>(new Contact("北京市","01051283346","100088")) ;
        System.out.println(per) ;
    }
};

  将自我介绍作为基本信息:

public class GenericsDemo33{
    public static void main(String args[]){
        Person<Introduction> per = null ;        // 声明Person对象
        per = new Person<Introduction>(new Introduction("李兴华","男",30)) ;
        System.out.println(per) ;
    }
};

  总体代码:

interface Info{        // 只有此接口的子类才是表示人的信息
}
class Contact implements Info{    // 表示联系方式
    private String address ;    // 联系地址
    private String telphone ;    // 联系方式
    private String zipcode ;    // 邮政编码
    public Contact(String address,String telphone,String zipcode){
        this.setAddress(address) ;
        this.setTelphone(telphone) ;
        this.setZipcode(zipcode) ;
    }
    public void setAddress(String address){
        this.address = address ;
    }
    public void setTelphone(String telphone){
        this.telphone = telphone ;
    }
    public void setZipcode(String zipcode){
        this.zipcode = zipcode ;
    }
    public String getAddress(){
        return this.address ;
    }
    public String getTelphone(){
        return this.telphone ;
    }
    public String getZipcode(){
        return this.zipcode ;
    }
    public String toString(){
        return "联系方式:" + "\n" +
                "\t|- 联系电话:" + this.telphone + "\n" + 
                "\t|- 联系地址:" + this.address + "\n" + 
                "\t|- 邮政编码:" + this.zipcode ;
    }
};
class Introduction implements Info{
    private String name ;        // 姓名
    private String sex ;        // 性别
    private int age ;            // 年龄
    public Introduction(String name,String sex,int age){
        this.setName(name) ;
        this.setSex(sex) ;
        this.setAge(age) ;
    }
    public void setName(String name){
        this.name = name ;
    }
    public void setSex(String sex){
        this.sex = sex ;
    }
    public void setAge(int age){
        this.age = age ;
    }
    public String getName(){
        return this.name ;
    }
    public String getSex(){
        return this.sex ;
    }
    public int getAge(){
        return this.age ;
    }
    public String toString(){
        return "基本信息:" + "\n" +
                "\t|- 姓名:" + this.name + "\n" + 
                "\t|- 性别:" + this.sex + "\n" + 
                "\t|- 年龄:" + this.age ;
    }
};
class Person<T extends Info>{
    private T info ;
    public Person(T info){        // 通过构造方法设置信息属性内容
        this.setInfo(info);
    }
    public void setInfo(T info){
        this.info = info ;
    }
    public T getInfo(){
        return this.info ;
    }
    public String toString(){    // 覆写Object类中的toString()方法
        return this.info.toString() ;
    }
};
public class GenericsDemo33{
    public static void main(String args[]){
        Person<Introduction> per = null ;        // 声明Person对象
        per = new Person<Introduction>(new Introduction("李兴华","男",30)) ;
        System.out.println(per) ;
    }
};

总结

  1)使用泛型之后,从整个操作的代码来说更合理,在日后讲解的类集上面,要大量使用泛型,本章要把泛型的基本概念全部掌握清楚。

  2)通过利用接口,和泛型的受限操作,使得只有接口的子类才能作为泛型类,作为人的类的基本信息传递。

  

转载于:https://www.cnblogs.com/alsf/p/5702002.html

标题SpringBoot智能在线预约挂号系统研究AI更换标题第1章引言介绍智能在线预约挂号系统的研究背景、意义、国内外研究现状及论文创新点。1.1研究背景与意义阐述智能在线预约挂号系统对提升医疗服务效率的重要性。1.2国内外研究现状分析国内外智能在线预约挂号系统的研究与应用情况。1.3研究方法及创新点概述本文采用的技术路线、研究方法及主要创新点。第2章相关理论总结智能在线预约挂号系统相关理论,包括系统架构、开发技术等。2.1系统架构设计理论介绍系统架构设计的基本原则和常用方法。2.2SpringBoot开发框架理论阐述SpringBoot框架的特点、优势及其在系统开发中的应用。2.3数据库设计与管理理论介绍数据库设计原则、数据模及数据库管理系统。2.4网络安全与数据保护理论讨论网络安全威胁、数据保护技术及其在系统中的应用。第3章SpringBoot智能在线预约挂号系统设计详细介绍系统的设计方案,包括功能模块划分、数据库设计等。3.1系统功能模块设计划分系统功能模块,如用户管理、挂号管理、医生排班等。3.2数据库设计与实现设计数据库表结构,确定字段类、主键及外键关系。3.3用户界面设计设计用户友好的界面,提升用户体验。3.4系统安全设计阐述系统安全策略,包括用户认证、数据加密等。第4章系统实现与测试介绍系统的实现过程,包括编码、测试及优化等。4.1系统编码实现采用SpringBoot框架进行系统编码实现。4.2系统测试方法介绍系统测试的方法、步骤及测试用例设计。4.3系统性能测试与分析对系统进行性能测试,分析测试结果并提出优化建议。4.4系统优化与改进根据测试结果对系统进行优化和改进,提升系统性能。第5章研究结果呈现系统实现后的效果,包括功能实现、性能提升等。5.1系统功能实现效果展示系统各功能模块的实现效果,如挂号成功界面等。5.2系统性能提升效果对比优化前后的系统性能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值