Java中抽象方法的重写

时间:2013-07-03 07:40:49

标签: java inheritance abstract-class

抽象方法具有它没有主体的属性。因此,当具体类扩展抽象类时,它必须实现该抽象方法。

所以我的问题是如何覆盖抽象方法?

8 个答案:

答案 0 :(得分:10)

带抽象方法的抽象类。

该方法也标有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");
    }
}

答案 1 :(得分:2)

只需为方法提供一个实现,就为它提供一个正文。

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

public class Sub extends Base {
   @Override
   public void someMethod() {
    //It is Overridden
   }
}

答案 2 :(得分:2)

public abstract class A {  
    public abstract String getValue();
}

public class B extends A {

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

与任何其他课程一样。

答案 3 :(得分:2)

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的运行时类型。

答案 4 :(得分:1)

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

所以,

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

 public class SubClass{
   public void someMethod(){

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

   }
 }

答案 5 :(得分:1)

Foo.java

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

Bar.java

public class Bar extends Foo {
    @Override
    public void doStuff() {
        // doStuff
    }
}

答案 6 :(得分:1)

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

答案 7 :(得分:1)

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

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

...

public class ConcreteClass {

    @Override
    public void abstractMethod() {
        ....
    }
}