[英]Extending an abstract class with an abstract builder vs concrete class and concrete builder
[英]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.