Расширение класса Graphics2D без реализации всех методов - PullRequest
3 голосов
/ 15 июля 2011

У меня есть класс с именем MyClass, и я хочу, чтобы этот класс расширял Graphics2D (в java.awt).Однако, когда я набираю public class MyClass extends Graphics2D { .... }, мне нужно добавить нереализованные методы draw, drawImage, addRenderingHints и т. Д., Потому что Eclipse показывает эту ошибку, и она не скомпилируется.

Вот тут и возникает вопрос:Я просто хочу использовать draw , setBackground и другие несколько методов Graphics2D, я не хочу, чтобы остальная часть кода шла с другими нереализованными методами, которые являются обязательными.

Есть ли способ избежать этого?Потому что я очень чист и прост, когда дело доходит до кода, и мне не нужны другие 100 строк кода, которые я даже не использую.

Каковы ваши предложения?

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

Вы можете сделать так, чтобы он расширял Graphics, и всякий раз, когда вам нужен Graphics2D, просто приведите.

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

Однако вам нужно будет создать переменную Graphics внутри, поскольку вы не можете разыграть this.

Так что для "setBackground":

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

Правда, что бы вы ни делали, это будет грязно.Я даже не уверен, что вы можете сделать this.create () без каких-либо неприятностей, так что имейте это в виду.

2 голосов
/ 15 июля 2011

См. http://download.oracle.com/javase/6/docs/api/java/awt/Graphics2D.html

Graphics2D является абстрактным классом, многие методы не являются абстрактными, и все они должны быть определены для получения подкласса, который может быть создан.

Есливы хотите попробовать, вы можете попробовать расширить некоторый класс, который реализует Graphics2D.Но тогда, если вы не будете осторожны, вы рискуете, что ваша реализация методов, которые вы хотите, может не соответствовать методам, которые вы не переопределяете ...

...