如何扩展java.awt.Color类?

时间:2010-12-11 22:06:32

标签: java oop inheritance

我正在用Java编写图形库。它将成为几个现有Java图形包的前端,结合了java.awt和javax.swing的功能。我是一名老师,我正在为我的初学生创建这个图书馆,这样他们就不必再用进口声明来躲避。我还想提供一些额外的内置颜色,以增加java.awt.Color附带的有限集合

我希望创建一个只扩展java.awt.Color的Color类。这样,学生就不必直接导入java.awt.Color。我试过这个:

package graphics;

public class Color extends java.awt.Color
{
}

但编译会引发错误cannot find symbol - constructor Color()。显然java.awt.Color类缺少默认构造函数,这导致我的类编译失败。

我是否只需咬紧牙关并编写自己的Color类并包含一些方法来在java.awt.Colors和我的Colors之间进行翻译?

2 个答案:

答案 0 :(得分:3)

是的,java.awt.Color没有默认的构造函数,所以你必须创建至少一个构造函数来调用超级构造函数:

public class Color extends java.awt.Color{
  public Color(int rgb) {
    super(rgb);
  }
}

答案 1 :(得分:1)

我会回答这个例子:

public class Color extends java.awt.Color {
  public final static Color AZURE = new Color(240,255,255);
  public static Color colorOf(String color) {
    try {
      return (Color)Color.class.getDeclaredField(color).get(null);
    } catch(Exception notAvailable) {
      System.out.println("RGB color " + color + " is not a predefined " +
                         "static color.");
      return null;     
     } 
   } 
 }