繁体   English   中英

抽象类扩展混凝土类

[英]Abstract Class Extending Concrete Classes

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

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

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

你可以有一种实现。 我的意思是这样的:假设你有一个动物类。 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()方法中运行。

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

public abstract class Foo extends FooFather{



}

然后我们创建一个扩展Foo的子类,如下所示:

public class Foo2 extends Foo{



}

And initialize it like this

Foo aFoo=new Foo2();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM