今天看到有些资料上写:用abstract修饰不在类内实现的方法,称为抽象方法;抽象方法必须在子类派生时被重载。抽象方法必须被重载,重载定义:方法名相同,方法参数个数,顺序,类型不同,如果按照那句话的说法程序就应该这样:
public class B extends A{
public void run(int i,int j){
}
}
abstract class A{
public void run();
}
编译错误,各位大神,资料上是不是写错了,应该是抽象方法必须在子类派生时被重写才对?

解决方案 »

  1.   

    子类如果不是抽象类那么必须重载实现父类的抽象方法,而且返回类型 抽象方法名,参数个数参数类型,还有参数类型的顺序必须相同
    例如
    package com;public abstract class AbstractClass {
    public abstract void doAction(Object obj,int a);
    }class Demo extends AbstractClass{
    public static void main(String[] args){

    } @Override
    public void doAction(Object obj, int a) {
    // TODO Auto-generated method stub

    }

    这样才是对的
      

  2.   

    楼主对重载的理解是对的。
    但是,子类对于父类抽象函数的实现,应该叫Override(重写).
    而重写的定义是参数列表和返回类型是不能变的。
      

  3.   

    类用abstract修饰了,里面所有的抽象方法也要用abstract修饰啊