【问题标题】:How can I extend the java.awt.Color class?如何扩展 java.awt.Color 类?
【发布时间】:2010-12-11 22:06:32
【问题描述】:

我正在用 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 之间进行转换的方法?

【问题讨论】:

    标签: java oop inheritance


    【解决方案1】:

    是的,java.awt.Color 没有默认构造函数,因此您必须创建至少一个构造函数并调用超级构造函数:

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

    【讨论】:

      【解决方案2】:

      我会用这个例子来回答:

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

      【讨论】:

        猜你喜欢
        • 2020-06-22
        • 2013-03-30
        • 2016-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多