-7

抽象方法的属性是它没有主体,所以当具体类扩展抽象类时,它必须实现那个抽象方法。

所以我的问题是一个抽象方法在没有主体的情况下如何被覆盖?它不是实现的,而不是被覆盖的吗?

4

8 回答 8

12

具有抽象方法的抽象类。

该方法也标有abstract并且没有主体。

public abstract class A {
    public abstract void method();
}

B扩展抽象类的类中的具体化A。此外,该方法会丢失abstract关键字并获取正文。

public class B extends A {
    @Override
    public void method() {
        System.out.println("Hello");
    }
}
于 2013-07-03T07:42:26.850 回答
3
public abstract class BaseClass {
    public abstract void doSomething();
}

public class ConcreteClass extends BaseClass {
    @Override
    public void doSomething() {
        System.out.println("Hi!");
    }
}

public class AnotherConcreteClass extends BaseClass {
    @Override
    public void doSomething() {
        System.out.println("Hello!");
    }
}

被执行的doSomething方法的实现将取决于您正在调用的对象的运行时类型doSomething

于 2013-07-03T07:44:50.163 回答
2

只需为方法提供一个实现,就可以为它提供一个主体。

public abstract class Base {
   public abstract void someMethod(); // no implementation here
}

public class Sub extends Base {
   @Override
   public void someMethod() {
    //It is Overridden
   }
}
于 2013-07-03T07:42:31.053 回答
2
public abstract class A {  
    public abstract String getValue();
}

public class B extends A {

    @Override
    public String getValue(){
        return "I'm Overriden";
    }
}

就像在任何其他班级一样。

于 2013-07-03T07:44:14.637 回答
1

当您在子类中实现超类方法时,它将覆盖。所以即使超类方法是抽象的,如果你在子类中实现它,它也会覆盖它。

所以,

public class SuperClass{
   public abstract void someMethod();
}

 public class SubClass{
   public void someMethod(){

           System.out.println("subclass method");

   }
 }
于 2013-07-03T07:42:44.600 回答
1

Foo.java

public abstract class Foo {
  public abstract void doStuff();
}

酒吧.java

public class Bar extends Foo {
    @Override
    public void doStuff() {
        // doStuff
    }
}
于 2013-07-03T07:42:47.227 回答
1

通过提供实现,可以像覆盖其他普通方法一样覆盖抽象方法。

于 2013-07-03T07:42:53.263 回答
1

这与任何其他方法覆盖相同:

public abstract class AbstractClass {
    public abstract void abstractMethod();
}

...

public class ConcreteClass {

    @Override
    public void abstractMethod() {
        ....
    }
}
于 2013-07-03T07:43:12.313 回答