2010-03-11 71 views
-2

我需要解決這個問題 - 區別泛型和多態使用代碼示例。 我知道它的相關somthing編譯時間或綁定,但我不知道..請幫助泛型和多態性

+3

作品還有一個類似的問題: http://stackoverflow.com/questions/2423231/polymorphism-relates-inheritance – 2010-03-11 07:45:30

+0

未顯示差異壽。 – Younes 2010-03-11 07:47:15

+0

我已經在http://stackoverflow.com/questions/5854581/polymorphism-in-c/5854862#5854862回答了類似的問題,這可能有所幫助。代碼示例非常簡單 - 僅足以說明每個概念。 – 2011-06-16 06:00:25

回答

10

多態性是類的屬性,因爲它們實現一個通用的接口,或從一個基類派生,實現虛擬方法用不同的方式來反映派生類的不同行爲。泛型是算法或實現算法(排序)或常用操作(列表)的類的屬性,要求它們處理的類具有特定的方法,屬性或接口。

+0

是否有任何代碼示例可以清楚說明? – Kelly 2010-03-11 07:54:53

+0

thnx爲您的幫助devio..appreciate它 – Kelly 2010-03-11 08:01:07

6

除了以前的答案......我將使用Java,但概念幾乎相同。 Java通用方法和泛型類使程序員能夠使用單個方法聲明指定一組相關方法,或者使用單個類聲明分別指定一組相關類型。

例如

使用Java泛型的概念,我們可以寫爲 泛型方法排序對象的數組,然後調用與 整數數組,雙數組,字符串數組等,一般的方法,將 數組元素進行排序。

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中最常見的使用多態性。

重要的是要知道訪問對象的唯一可能方式是通過引用變量。參考變量只能是一種類型。一旦聲明,參考變量的類型不能改變。

例如,

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;