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

时间:2014-03-29 15:55:45

标签: java abstract

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

我的问题,如何将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);
    }
}

2 个答案:

答案 0 :(得分:1)

你不能没有施法。 您只能执行抽象类中定义的方法,如果您在具有特定实现的三角形类中实现它,那么这是可以的。 为了能够运行未在摘要中定义的方法,您必须强制转换

答案 1 :(得分:0)

投下它:

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();
    }
}