Bor*_*jaX 7 java oop inheritance abstract
我知道这是一个非常简单的问题,但是我已经在Python工作了很长时间,现在我必须回到Java,我似乎在更换芯片时遇到了问题,并且围绕着Java的基本多态性.
是否可以abstract使用其中一个继承的类作为参数覆盖(实现,确切地说)Java中的类方法?
让我用一个非常简单的例子来解释(遵循"几乎官方"的 形状示例)
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");
}
}
Run Code Online (Sandbox Code Playgroud)
有没有让Java识别的任何方式draw的方法CircleDrawer类作为抽象的实施draw中ShapeDrawer?(Circle班级从Shape毕竟延伸)
否则说:我想要的是类的draw方法CircleDrawer只接受类型的实例Circle,但同时,我想告诉Java编译器它void draw(Circle c)实际上是abstract void draw(Shape s)位于其父类中的抽象方法的实现类.
先感谢您.
您可以通过泛型来解决您的问题:
public abstract class ShapeDrawer<T extends Shape> {
public abstract void draw(T shape);
}
public class CircleDrawer extends ShapeDrawer<Circle> {
public void draw(Circle circle) { ... }
}
Run Code Online (Sandbox Code Playgroud)