2014-11-22 43 views
1

我有一個名爲Parent的抽象類,它包含2個抽象方法,我想在其他擴展Parent類的類中覆蓋它們。如何在使用抽象類的java中使用多態性?

這裏是我的代碼:

abstract class Parent<T> 
{ 
    public T a[]; 
    public abstract void sort(T a[]); 
    public abstract void searc(T a[]); 
} 

class B_Sort<T> extends Parent<T> 
{ 

    @Override 
    public void sort(T[] a) { 
     for(int i =1; i< a.length; i++){ 
      for(int j = 0; j < (a.length - i); j ++){ 
       if((((Comparable) (a[j])).compareTo(a[j+1])) > 0){ 
        T tmp = a[j]; 
        a[j] = a[j + 1]; 
        a[j + 1] = tmp; 
       }     
      } 
     } 
    } 

    @Override 
    public void searc(T[] a) { 
    } 

} 

這是我的主類和運行程序的主要方法:

public class ProjectX 
{ 
    public static void main(String[] args) { 
     int [] a={2,3,1,5}; 
     Parent<Integer> cc=new B_Sort<>(); 
     cc.sort(a);   
    }  
} 

然而,cc.sort(a)工作不正常,我就得到了一個錯誤那條線。我的程序沒有工作!爲什麼這是不正確的?

+1

如果你有錯誤,請發佈,它會更容易幫助你:) – NiziL 2014-11-22 14:16:25

+0

@Nizil不,我在我的Netbeans IDE中有一個紅色標題,並且我的程序沒有運行 – Ahmadreza 2014-11-22 14:17:34

+0

Your searc( )方法是空的!它應該做什麼,它沒有做什麼?也像Nizil說的那樣,發佈錯誤請 – Maor 2014-11-22 14:18:01

回答

2

嘗試改變

int [] a={2,3,1,5}; 

Integer [] a={2,3,1,5}; 

基元(如int[])的陣列可以不會被自動轉換爲含有這些基元的盒裝版本的陣列(Integer[]) 。

+0

我該如何做Double? – Ahmadreza 2014-11-22 14:20:02

+0

@Ahmadreza'Double [] a = {2.0,3.5,1.2}; Parent cc = new B_Sort <>(); cc.sort(a);' – Eran 2014-11-22 14:21:47

+0

感謝您的回答 – Ahmadreza 2014-11-22 14:22:58