在Java中从抽象类定义精确类
我有一个名为component的类,它将形状对象作为参数。创建component对象的主类并不确切知道它发送给它的是哪种类型的形状,它只知道它发送了一个抽象形状。然而,我的组件知道它只会得到一个三角形,因此使用它的特定属性 我的问题是,如何将抽象参数转换为它的特定子类?例如:在Java中从抽象类定义精确类,java,abstract,Java,Abstract,我有一个名为component的类,它将形状对象作为参数。创建component对象的主类并不确切知道它发送给它的是哪种类型的形状,它只知道它发送了一个抽象形状。然而,我的组件知道它只会得到一个三角形,因此使用它的特定属性 我的问题是,如何将抽象参数转换为它的特定子类?例如: public class TriangleHandler extends AbstractHandler{ //More //Code //Here public tick(Abstract
public class TriangleHandler extends AbstractHandler{
//More
//Code
//Here
public tick(AbstractShape shape){
shape.doTrinagleStuff();
}
}
public class MainClass{
private AbstractShape currentShape;
private AbstractHandler currentHandler;
//More
//Code
//Here
public tick(){
currentHandler.tick(currentShape);
}
}
就投吧:
public class TriangleHandler extends AbstractHandler{
public tick(AbstractShape shape){
// Since we KNOW it's a triangle, we can cast it
Triangle triangle = (Triangle)shape;
triangle.doTrinagleStuff();
}
}
你不能不施法。 您只能执行抽象类中定义的方法,如果您在triangle类及其特定实现中实现它,则可以执行抽象类中定义的方法。
为了能够运行一个未在抽象中定义的方法,您必须强制转换如果该方法只接受三角形,为什么要使用AbstractShape?直接使用三角形不?你能再显示一些代码吗。你的问题令人困惑,特别是因为
勾选()
。我们不知道这应该是构造函数还是方法。