泛型概念:泛指某一种类型。
使用时机:
创建一个对象的时候, 明确泛型。
调用一个方法的时候,明确泛型。
创建一个类,然后类实现一个接口的时候,明确泛型。
泛型作用:
1,让程序更精确
比如Arraylist
2,提高程序的 可扩展性 兼容性,体现可扩展性的地方就是我们下面要提到的泛型类,泛型方法,泛型接口。
泛型类
娱乐公司类:

游戏公司类:

动漫公司类:

泛型类例子:
创建一个对象的时候, 明确泛型。

结果:

通过泛型可以用一个Entertainment_Company类来打印操作多种类型,
具体类型与Entertainment_Company<>尖括号里的泛型有关系。
缺点:需要建立很多不同公司类型的对象。
泛型方法:
娱乐公司类:

游戏公司类:

动漫公司类:

泛型类例子:
调用一个方法的时候,明确泛型。

结果:

我们把泛型只加在Entertainment_Company类中的show方法上,这样我们使用这个show方法的时候才明确泛型。
所以创建对象的时候不需要明确泛型,一个对象就足够了。
泛型接口:
公司接口:

玩类:

游戏公司类:继承公司接口

动漫公司类:继承公司接口

结果:

泛型通配符
不确定类型<?>

并不能创建对象,我们一般用来做接收。

表示任意类型。
自己和自己的子类<? extends 类>
不能创建对象,用来做接收,范围是这个类以及其子类。

无法通过编译,Animal不是Cat的子类而是父类

通过编译,Animal是Cat的父类

没add过就输出俩[]空集了。
自己和自己的父类<? super 类>
同理不能创建对象,用来做接收,范围是这个类以及其父类。

无法通过编译,Cat不是Animal的父类而是子类

通过编译,Animal是Cat的父类

没add过就输出俩[]空集了。