在抽象类中调用Abstract方法是什么意思?

时间:2014-01-15 07:32:14

标签: java abstract

我遇到了一段代码,其中有一个抽象方法的调用?我只是想知道它意味着什么?同时,这个课程是从一个非抽象的方法中调用的。

4 个答案:

答案 0 :(得分:2)

实现抽象类时,您还将实现一个具体的类。在具体类中,需要实现抽象类的所有抽象方法。

当抽象类中的方法调用抽象方法时,它引用具体类中此方法的实现。

public abstract class A {
    public String method() {
        // do something
        int i = abstractMethod(); // abstract method call
    }

    public abstract int abstractMethod();
}

public class B extends A {
    public int abstractMethod() { // <-- this implementation of the method is called.
        return 1;
    }
}

public class C extends A {
    public int abstractMethod() { // <-- this implementation of the method is called.
        return 100;
    }

    public static void main(String[] args) {
        A a = new B();
        a.method(); // -> abstractMethod of class B is called

        a = new C();
        c.method(); // -> abstractMethod of class C is called
    }
}

答案 1 :(得分:0)

抽象方法是一种属于抽象类但没有实现的方法,这意味着它必须由抽象类的任何子项实现(或覆盖)。

答案 2 :(得分:0)

这就是抽象方法/类的全部概念:它允许开发人员稍后定义类的行为。

假设您的类需要“加载一些资源”,但您希望为该任务提供不同的实现。然后,您可以通过网络或文件系统等加载资源来覆盖抽象方法。

请参阅:http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

答案 3 :(得分:0)

抽象方法是抽象类或接口内的方法。它没有主体,必须先由子类定义才能实例化。这允许定义一些常用方法的接口类,但留下一些实现。

抽象方法可以从非抽象方法中调用,因为:

  1. 它们是非静态的,因此需要调用该类的实例。
  2. 如果方法尚未实现,则该类的实例可能不存在,因为生成的类也将是抽象的。
  3. 因此,调用者将始终拥有实现该方法的类的实例。