黑马程序员_泛型

来源:互联网 发布:怎样利用网络赚钱 编辑:程序博客网 时间:2024/05/29 16:44

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ---------

 

泛型主要的推出主要目的是可以建立具有类型安全的集合框架,如链表、散列映射等数据结构。

泛型类声明

可以使用“clss名称<f泛型列表>”声明一个类,为了和普通类有所区别,这样声明的类称作泛型类,如:class people<E>

其中People是泛型类的名称,E是其中的泛型,也就是说,并没有制定E是何种类型的数据,它可以是任何对象或接口,但不能是基本数据类型。

泛型类的类体和普通类的类体完全类似,由成员变量和方法构成,如涉及一个锥,锥只关心它的滴面积是多少,并不关心底的具体形状,它所关心的是用底面积和高计算出自身的体积,因此,可以用泛型作为自己的底,代码可以是:

class Cone<E>{

    double height;

    E bottom;

    public Cone(E b){

        bottom = b;

    }

}

使用泛型类声明对象

和普通类相比,泛型类声明和创建对象时,类名后多了一对“<>”,而且必须要用具体的类型替换“<>”中的泛型。

以下例子声明了一个泛型类Cone,一个Cone对象计算体积时只关心它的底是否能计算面积,并不关心底的类型。

public class Cone<E>{
 double height;
 E bottom;
 public Cone(E b){
  bottom = b;
 }
 public void serHeight(double h){
  height = h;
 }
 public double computerVolume(){
  String s = bottom.toString();
  double area = Double.parseDouble(s);
  return 1.0 / 3.0 * area * height;
 }
}

 

public class Rect{
 double sideA, sideB, area;
 Rect(double a, double b){
  sideA = a;
  sideB = b;
 }
 public String toString() { //重写Object类的toString方法
  area = sideA * sideB;
  return "" + area;
 }
}

 

public class Circle{
 double area, radius;
 Circle(double r){
  radius = r;
 }
 public String toString(){
  area = radius * radius * Math.PI;
  return "" + area;
 }
}

 

public class Test{
 public static void main(String args[]){
  Circle circle = new Circle(10);
  Cone <Circle> coneOne = new Cone<Circle>(circle); //创建一个圆锥对象
  coneOne.setHeight(16);
  System.out.println(coneOne.computerVolume());
  Rect rect = new Rect(15, 23);
  Cone<Rect> coneTwo = new Cone<Rect>(rect); //创建一个方锥对象
  coneTwo.setHeight(98);
  System.out.println(coneTwo.computerVolume));
 }
}

 

运行结果为:

1675.5160819145563

11270.0

原创粉丝点击