【问题标题】:How to use Polymorphism in java using abstract class?如何使用抽象类在java中使用多态性?
【发布时间】:2015-01-20 14:26:07
【问题描述】:

我有一个名为 Parent 的抽象类,其中包含 2 个抽象方法,我想在扩展 Parent 类的其他类中覆盖它们。

这是我的代码:

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) 无法正常工作,我在该行出现错误。我的程序没用!!为什么这是不正确的?

【问题讨论】:

  • 如果有错误,请贴出来,这样会更容易帮到你:)
  • @Nizil 不,我的 Netbeans IDE 在那一行的标题是红色的,我的程序没有运行
  • 你的 searc() 方法是空的!它应该做什么,它没有做什么?也像 Nizil 说的,请发布错误
  • 您应该将参数T 更改为T extends Comparable。这样你就不必强制转换了,而且你在运行时ClassCastExceptions 是安全的。

标签: java class inheritance polymorphism abstract


【解决方案1】:

尝试改变

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

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

基元数组(例如int[])无法自动转换为包含这些基元的装箱版本(Integer[])的数组。

【讨论】:

  • Double 如何做到这一点?
  • @Ahmadreza Double [] a = {2.0,3.5,1.2}; Parent&lt;Double&gt; cc=new B_Sort&lt;&gt;();cc.sort(a);
猜你喜欢
  • 1970-01-01
  • 2015-05-14
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 2020-08-27
  • 2020-04-06
  • 1970-01-01
  • 2012-10-01
相关资源
最近更新 更多