泛型和多态性

时间:2010-03-11 07:42:54

标签: polymorphism

我非常需要这个问题的答案--- 使用代码示例在泛型和多态之间的区别。 我知道它与编译时间或绑定相关的东西,但我不确定..请帮助

2 个答案:

答案 0 :(得分:10)

多态性是类的一个属性,因为它们实现了一个公共接口,或者是从基类派生的,以不同的方式实现虚方法以反映派生类的不同行为。

泛型是算法的属性,或实现算法(排序)或公共操作(列表)的类,要求它们处理的类具有某些方法,属性或接口。

答案 1 :(得分:6)

除了之前的答案......我将使用Java,但概念几乎相同。 Java通用方法和泛型类使程序员能够使用单个方法声明指定一组相关方法,或者使用单个类声明指定一组相关类型。

e.g。

  

使用Java Generic概念,我们可能会编写一个通用方法   排序对象数组,然后使用调用泛型方法   整数数组,双数组,字符串数组等,用于排序   数组元素。

public class GenericMethodTest
{
// generic method printArray                         
public static < E > void printArray( E[] inputArray )
{
  // Display array elements              
     for ( E element : inputArray ){        
        System.out.printf( "%s ", element );
     }
     System.out.println();
}

public static void main( String args[] )
{
    // Create arrays of Integer, Double and Character
    Integer[] intArray = { 1, 2, 3, 4, 5 };
    Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
    Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };

    System.out.println( "Array integerArray contains:" );
    printArray( intArray  ); // pass an Integer array

    System.out.println( "\nArray doubleArray contains:" );
    printArray( doubleArray ); // pass a Double array

    System.out.println( "\nArray characterArray contains:" );
    printArray( charArray ); // pass a Character array
}   
}

多态性是一种物体采取多种形式的能力。当父类引用用于引用子类对象时,OOP中最常见的多态性使用。

  

重要的是要知道访问对象的唯一可能方法是通过引用变量。引用变量只能是一种类型。声明后,无法更改引用变量的类型。

e.g。

 public interface Vegetarian{}
 public class Animal{}
 public class Deer extends Animal implements Vegetarian{}

现在,以下声明是合法的:

Deer d = new Deer();
Animal a = d;
Vegetarian v = d;
Object o = d;