如何从Color类扩展

时间:2014-07-22 22:18:55

标签: java class colors

我有问题。我创建了一个扩展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; 
    }
}

错误:Implicit super constructor Color() is undefined. Must explicitly invoke another constructor.解决它的唯一方法是使用整数作为参数的super(),但我不想使用super()。这个问题有方法解决吗?这是一本书中的问题:Java的艺术与科学。第10章问题6.我正在努力学习Java

1 个答案:

答案 0 :(得分:6)

Color没有任何no-arg构造函数,因此您使用super(some arguments)

因为默认编译器调用超类

的no-arg构造函数
public LabeledColored1(Color color, String name) {
      super(); // by default added
      ..
}

应该是

public LabeledColored1(Color color, String name) {
      super(color.getRed(),color.getGreen(),color.getBlue()); 
      ..
}

OR

public LabeledColored1(Color color, String name) {
      super(color.getRGB()); 
      ..
}

如果您没有覆盖现有课程的任何功能,那么永远不会扩展,而是使用合成。

阅读Composition over inheritance原则,在这种情况下可能对您有帮助。

我有一个疑问,为什么你要扩展Color类,因为你已经在类中拥有Color个对象。

您要将inheritancecomposition合并到同一个班级中。

相关问题