我知道这是一个非常简单的问题,但我已经在Python上工作了相当长的时间,现在我必须回到Java,似乎我有问题理解Java基本的多态性。在Java中,使用继承类作为参数来覆盖(实现,准确地说)一个类的抽象方法是否可能?让我用一个非常简单的例子来解释一下(遵循形状的“几乎官方”example)。
class Shape {}
class Circle extends Shape {}
class Triangle extends Shape {}
abstract class ShapeDrawer {
abstract void draw(Shape s);
}
class CircleDrawer extends ShapeDrawer {
void draw(Circle c){
System.out.println("Drawing circle");
}
}
有没有办法让Java将CircleDrawer
类中的draw
方法标识为ShapeDrawer
中抽象方法draw
的实现?(毕竟,Circle
类是从Shape
类继承而来的)
或者说:我想要的是CircleDrawer
类中的draw
方法仅接受Circle
类型的实例,但同时,我想告诉Java编译器void draw(Circle c)
实际上是其父类中abstract void draw(Shape s)
方法的实现。
提前感谢您。