摘要 Class 扩展具体 Classes

Abstract Class Extending Concrete Classes

我有一个抽象 class 扩展了具体 class。但我对如何使用它感到困惑。我应该如何使用抽象 class 中的方法实例化具体的 class ,就像我通常会做的相反?还是有另一种方法来实例化 classes?

抽象class总是扩展具体class(至少java.lang.Object)。所以它的工作方式和往常一样。如果你想实例化它,你将不得不用这些抽象方法的具体实现来子class它,并通过具体的class来实例化它。

就像你一直做的那样。这不是特例。

例如假设我们有一个 foo 抽象 class 扩展 fooFather class .

public abstract class Foo extends FooFather{



}

然后我们创建一个像这样扩展 Foo 的子class:

public class Foo2 extends Foo{



}

And initialize it like this

Foo aFoo=new Foo2();

你可以有一种实现方式。我的意思是这样的: 假设您有一只动物 class。 Animal class 有一个方法名称 jump(),然后是另一个扩展 Mammal 的 class。 Mammal class 是抽象的。我的理解是,您希望 class 扩展 Mammal 必须重写 jump() 方法。这就是我认为是你的问题。为了实现这一点,我会说创建一个抽象方法并在原始方法中调用它。我的意思是这样的:

public class Animal
{
    public final String name;
    public final int weight;

    public Animal(String name, int weight)
    {
        this.name = name;
        this.weight = weight;
    }

    public void jump()
    {
        System.out.println(name + " Jumped");
    }
}

然后你有哺乳动物 class:

public abstract class Mammal extends Animal
{
    public Mammal(String name, int weight)
    {
        super(name, weight);
    }

    public abstract void jumpMammal();

    @Override
    public final void jump()
    {
        jumpMammal();
    }
}

如果任何 class 试图覆盖 Mammal class,他们需要覆盖 jumpMammal() 方法,因此 运行 在 jump()方法。