• 实例讲解-泛型操作范例


    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 "联系方式:" + "
    " +
                    "	|- 联系电话:" + this.telphone + "
    " + 
                    "	|- 联系地址:" + this.address + "
    " + 
                    "	|- 邮政编码:" + 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 "基本信息:" + "
    " +
                    "	|- 姓名:" + this.name + "
    " + 
                    "	|- 性别:" + this.sex + "
    " + 
                    "	|- 年龄:" + 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 "联系方式:" + "
    " +
                    "	|- 联系电话:" + this.telphone + "
    " + 
                    "	|- 联系地址:" + this.address + "
    " + 
                    "	|- 邮政编码:" + 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 "基本信息:" + "
    " +
                    "	|- 姓名:" + this.name + "
    " + 
                    "	|- 性别:" + this.sex + "
    " + 
                    "	|- 年龄:" + 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)通过利用接口,和泛型的受限操作,使得只有接口的子类才能作为泛型类,作为人的类的基本信息传递。

      

  • 相关阅读:
    nginx配置ssl并结局TP3.2路由pathinfo
    TP3.2公共模板
    linux 上mysql慢日志查询
    RBAC流程
    Linux下安装Lnmp环境
    php操作redis命令大全
    Opencv无法调用cvCaptureFromCAM无法打开电脑自带摄像头
    c++考研复习之非递归前序中序后序遍历二叉树
    学习《Numpy基础知识》
    学习《Numpy快速教程
  • 原文地址:https://www.cnblogs.com/alsf/p/5702002.html
Copyright © 2020-2023  润新知