摘要类扩展混凝土类

时间:2015-11-12 22:10:54

标签: java abstract-class extend

我有一个扩展具体类的抽象类。但我对如何使用它感到困惑。我怎么想用抽象类中的方法实例化具体类,就像我通常会反过来一样?或者是否有另一种实例化类的方法?

3 个答案:

答案 0 :(得分:12)

抽象类总是扩展一个具体的类(至少java.lang.Object)。所以它的工作原理与以往一样。如果要实例化它,则必须使用这些抽象方法的具体实现对其进行子类化,并通过具体类对其进行实例化。

就像你一直这样。这不是一个特例。

答案 1 :(得分:3)

您可以进行某种实施。我的意思是: 假设你有一个Animal类。 Animal类的方法名称为jump(),然后是另一个扩展Mammal的类。 Mammal类是抽象的。我的理解是,您希望任何类扩展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");
    }
}

然后你有哺乳动物课:

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();
    }
}

如果任何类尝试覆盖Mammal类,则需要覆盖jumpMammal()方法,因此以jump()方法运行。

答案 2 :(得分:1)

例如,假设我们有一个扩展fooFather类的foo抽象类。

public abstract class Foo extends FooFather{



}

然后我们创建一个扩展Foo的子类:

public class Foo2 extends Foo{



}

And initialize it like this

Foo aFoo=new Foo2();