如何扩展java.awt.Color类?
我正在用Java编写一个图形库。它将是几个现有Java图形包的前端,结合了Java.awt和javax.swing的特性。我是一名教师,我正在为我的初学学生创建这个库,这样他们就不必到处乱搞各种各样的导入语句。我还想提供一些额外的内置颜色,以增强java.awt.Color附带的有限集 我希望创建一个仅扩展java.awt.Color的Color类。这样,学生就不必直接导入java.awt.Color。我试过这个:如何扩展java.awt.Color类?,java,oop,inheritance,Java,Oop,Inheritance,我正在用Java编写一个图形库。它将是几个现有Java图形包的前端,结合了Java.awt和javax.swing的特性。我是一名教师,我正在为我的初学学生创建这个库,这样他们就不必到处乱搞各种各样的导入语句。我还想提供一些额外的内置颜色,以增强java.awt.Color附带的有限集 我希望创建一个仅扩展java.awt.Color的Color类。这样,学生就不必直接导入java.awt.Color。我试过这个: package graphics; public class Color ex
package graphics;
public class Color extends java.awt.Color
{
}
但是编译会引发找不到符号构造函数颜色的错误。显然java.awt.Color类缺少默认构造函数,这导致我的类编译失败
我是否需要咬紧牙关,编写自己的颜色类,并包含一些在java.awt.Colors和我的颜色之间转换的方法?是的,java.awt.Color没有默认构造函数,因此您必须创建至少一个构造函数才能调用超级构造函数:
public class Color extends java.awt.Color{
public Color(int rgb) {
super(rgb);
}
}
是的,java.awt.Color没有默认构造函数,因此您必须创建至少一个构造函数并调用超级构造函数:
public class Color extends java.awt.Color{
public Color(int rgb) {
super(rgb);
}
}
我会用这个例子来回答:
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;
}
}
}
我会用这个例子来回答:
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;
}
}
}