扩展Graphics2D类而不实现所有方法

时间:2011-07-14 20:25:51

标签: java oop graphics implementation graphics2d

我有一个名为MyClass的类,我希望这个类扩展Graphics2D(在java.awt中)。但是当我输入public class MyClass extends Graphics2D { .... }时,我必须添加未实现的方法draw,drawImage,addRenderingHints等,因为Eclipse显示了这个错误并且它不会编译。

这就是我想到的问题:我只想使用绘制 setBackground 以及Graphics2D的其他几种方法,我不希望剩下的代码与其他未实现的方法一起使用。

有没有办法避免这种情况?因为我在代码方面非常干净和简单,我不想要其他100行代码甚至不使用。

你有什么建议?

2 个答案:

答案 0 :(得分:2)

请参阅http://download.oracle.com/javase/6/docs/api/java/awt/Graphics2D.html

Graphics2D是一个抽象类,许多方法都不是抽象的,必须定义所有方法才能获得可以实例化的子类。

如果你想尝试,你可以尝试扩展一些实现Graphics2D的类。但是,如果你不小心,你会冒险尝试你所希望的方法的实现可能与你没有覆盖的方法不一致......

答案 1 :(得分:2)

你可以让它扩展Graphics,并且只要你需要Graphics2D,就可以演员。

Graphics g = this.create(); Graphics2D g2d = (Graphics2D) g;

然而,您需要在其中制作图形变量,因为您无法投射this

所以对于“setBackground”:

public void setBackground(Image img) {
    g2d.setBackground(img);
}

但是,真的,无论你做什么,它都会变得凌乱。我甚至不确定你是否可以做这个.create()的事情没有坏事发生,所以记住这一点。