抽象方法具有它没有主体的属性。因此,当具体类扩展抽象类时,它必须实现该抽象方法。
所以我的问题是如何覆盖抽象方法?
答案 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() {
....
}
}