2014-11-22 41 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