在Java中从抽象类定义精确类

在Java中从抽象类定义精确类,java,abstract,Java,Abstract,我有一个名为component的类,它将形状对象作为参数。创建component对象的主类并不确切知道它发送给它的是哪种类型的形状,它只知道它发送了一个抽象形状。然而,我的组件知道它只会得到一个三角形,因此使用它的特定属性 我的问题是,如何将抽象参数转换为它的特定子类?例如: public class TriangleHandler extends AbstractHandler{ //More //Code //Here public tick(Abstract

我有一个名为component的类,它将形状对象作为参数。创建component对象的主类并不确切知道它发送给它的是哪种类型的形状,它只知道它发送了一个抽象形状。然而,我的组件知道它只会得到一个三角形,因此使用它的特定属性

我的问题是,如何将抽象参数转换为它的特定子类?例如:

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?直接使用三角形不?你能再显示一些代码吗。你的问题令人困惑,特别是因为
勾选()
。我们不知道这应该是构造函数还是方法。