类模板(Class Template): 类模板---->类----->实例.

如果类别之间只是数据型态不同,那么是可以导出类别模板的.

C++模板有关键字Template: template <typename T>在类的声明和类中函数的在类外定义时都需要写在前面.

template <typename T>

class A{

public:

T number ;

void show\(\){

    cout<<"number:"<<number<<endl;

}

};

Java模板:

class Data<T>{

private T value;

Data\(T v\){ value = v;}

public T Value\(\){return value;}

}

Data<String> sdata = new Data<String>();

Data<Long> idata = new Data<Long>();

模板是遇到一种数据类型就产生对应类型的一个类.

模板的继承:

abstract class Pair <T1,T2>{

T1 key;

T2 value;

Pair\(T1 k, T2 v\){

    key = k;

    value = v;

}

abstract public T1 get\_key\(\);

abstract public T2 get\_value\(\);

}

class myPair<T1,T2> extends Pair<T1,T2>{

myPair\(T1 a, T2 b\){

    super\(a,b\);

}

@Override

public T1 get\_key\(\) {

    // TODO Auto-generated method stub

    return key;

}

@Override

public T2 get\_value\(\) {

    // TODO Auto-generated method stub

    return value;

}

}

public class Test13 {

public static void main\(String\[\] args\) {

    // TODO Auto-generated method stub

    Pair&lt;String,Object&gt; pa = 

            new myPair&lt;String, Object&gt;\("a1",new String\("myDog"\)\);

    System.out.println\("key:"+pa.get\_key\(\)\);

    System.out.println\("value:"+pa.get\_value\(\)\);

}

}

模板的组合:

class Pair1<T1,T2>{

T1 key;

T2 value;

Pair1\(T1 k, T2 v\){

    key = k; value = v;

}

public T1 get\_key\(\){return key;}

public T2 get\_value\(\){return value;}

}

class Data<T>{

private T value;

Data\(T v\){value = v;}

public T value\(\){return value;}

}

public class Test14 {

public static void main\(String\[\] args\) {

    // TODO Auto-generated method stub

    Pair1&lt;String,Integer&gt; pa = new Pair1&lt;String,Integer&gt;\("k1",25\);

    Data&lt;Pair1&lt;String,Integer&gt;&gt; da = new Data&lt;Pair1&lt;String,Integer&gt;&gt;\(pa\);

    System.out.println\("key:"+da.value\(\).get\_key\(\)

            +",value:"+da.value\(\).get\_value\(\)\);

}

}

results matching ""

    No results matching ""