如何从Color类扩展

Ust*_*med 2 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; 
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Bra*_*raj 6

颜色没有任何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对象的地方扩展课程.

要结合两者inheritancecomposition在同一个班.