摘要 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()
方法。
我有一个抽象 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()
方法。