java的面向对象编程(oop)——认识泛型

前言:

打好基础,daydayup!

 泛型

1,认识泛型:

定义类,接口,方法时,同时声明了一个或多个类型变量(例:),称为泛型,泛型接口,泛型方法,这些统称为泛型。

 以ArrayList语句为例:

 ArrayList 对象 = new ArratList<>();

 ArrayList没声明变量时,可以添加任何对象;但声明变量后,只能添加指定对象。

java的面向对象编程(oop)——认识泛型_第1张图片

2,泛型原理:

泛型原理就是把具体的数据类型作为参数传给类型变量。如下图:在使用ArrayList语句时,ArrayList会把数据类型传给源码中的类型变量。

java的面向对象编程(oop)——认识泛型_第2张图片

3,泛型作用

泛型提供了在编译阶段约束所能操作的数据类型,可以避免强制转换及替他数据异常。

4,自定义泛型

        1)自定义泛型类

表达方式:

修饰符 class 类名<类型变量,类型变量...>{...}

例:

public class ArrayList {
            内容
}
实验1:

定义一个泛型源码,使其可以存储数据也可以取出数据。 

 操作如下图:

public class fandemo//类型变量建议用大写英文字母
 {
    private Object[] arr = new Object[10];
//定义一个object数组,方便存储不同类型数据
    private  int size; //设置数据(方便存入数组)
    public boolean add(A a){
        arr[size++] = a;  //把数据存入数组
        return true;
    }
    public A get(int index){ //
设置索引        return (A)arr[index];// 通过索引返回数组
    }
}

结果如下:

java的面向对象编程(oop)——认识泛型_第3张图片

 fandemo声明变量时,只能添加指定对象。同时可以通过get方法访问数组

java的面向对象编程(oop)——认识泛型_第4张图片

 2)自定义泛型接口

 表达方式:

修饰符 interface 接口名<类型变量,类型变量...>{...}

例:

public interface fan {...}
实验2:

定义一个泛型数据处理接口,使其可以添加数据也可以取出数据。

操作如下:

public interface date {
    void add(E e);
    ArrayList get(String name);
}

 随后创建一个cardate用来承接接口便可。

java的面向对象编程(oop)——认识泛型_第5张图片

 3)自定义泛型方法

表达如下:

修饰符 <类型变量,类型变量...> 返回值类型 方法名 (形参列表){...}

例:

public static  T fangfa(T t ){.
            return t;
}
public static  void goo(T t ){...}
实验3:

创建一个泛型方法,使所有汽车类都可以使用,但汽车类以外的类不能使用

操作如下:

首先创建一个car类,并创建子类使其继承car。

java的面向对象编程(oop)——认识泛型_第6张图片

其次创建一个泛型方法,并使其只能继承car及car的子类。

    public static  void go(ArrayList cars){

    }

 然后使用方法即可

java的面向对象编程(oop)——认识泛型_第7张图片

最后:由于方法仅限car及car的子类使用,其他的会报错。

java的面向对象编程(oop)——认识泛型_第8张图片

结语:

泛型已经属于架构的语法了,初期能够读懂即可。整理结束,撒花!!

你可能感兴趣的:(java,开发语言)