我有个问题.我创建了一个扩展Color类的新类.但是,它给了我一个错误.这是代码:
public class LabeledColored1 extends Color {
public Color colour;
public String nom;
public LabeledColored1(Color color, String name) {
colour = color;
nom = name;
toString();
}
public String toString(){
return nom;
}
}
Run Code Online (Sandbox Code Playgroud)
错误:Implicit super constructor Color() is undefined. Must explicitly invoke another constructor.解决它的唯一方法是使用整数作为参数的super(),但我不想使用super().这个问题有方法解决吗?这是一本书中的问题:Java的艺术与科学.第10章问题6.我正在努力学习Java
颜色没有任何no-arg构造函数,因此您可以使用super(some arguments)
因为默认编译器调用超类的no-arg构造函数
public LabeledColored1(Color color, String name) {
super(); // by default added
..
}
Run Code Online (Sandbox Code Playgroud)
它应该是
public LabeledColored1(Color color, String name) {
super(color.getRed(),color.getGreen(),color.getBlue());
..
}
Run Code Online (Sandbox Code Playgroud)
要么
public LabeledColored1(Color color, String name) {
super(color.getRGB());
..
}
Run Code Online (Sandbox Code Playgroud)
如果您没有覆盖现有类的任何功能,则永远不要扩展它而是使用组合.
我有一个疑问,为什么你在课堂本身Color已经有Color对象的地方扩展课程.
要结合两者inheritance并composition在同一个班.