泛型和多态性

Kel*_*lly -2 polymorphism

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

dev*_*vio 10

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

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


eko*_*nov 6

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

例如

使用Java Generic概念,我们可能会编写一个用于对对象数组进行排序的泛型方法,然后使用Integer数组,Double数组,String数组等调用泛型方法来对数组元素进行排序.

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
}   
}
Run Code Online (Sandbox Code Playgroud)

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

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

例如

 public interface Vegetarian{}
 public class Animal{}
 public class Deer extends Animal implements Vegetarian{}
Run Code Online (Sandbox Code Playgroud)

现在以下声明是合法的:

Deer d = new Deer();
Animal a = d;
Vegetarian v = d;
Object o = d;
Run Code Online (Sandbox Code Playgroud)