首先,关于这个问题的标题:
  子类继承基类构造函数,同时保持代码重用原则
构造函数永远不会被继承。它只是不会发生。您一直在演示的不是继承——它只是要求任何构造函数(除了 in 中的构造函数java.lang.Object)必须链接到同一类中的另一个构造函数,或者链接到超类中的构造函数。
  所以这段代码有错误,因为基类有参数对吗?
嗯,准确的说,是因为基类没有无参数的构造函数。
  因为每个子类的默认构造函数都调用了基类的默认构造函数?
仅当您未明确指定任何构造函数时才提供默认构造函数。默认构造函数总是隐式调用基类中的无参数构造函数。
  并且我们没有导致错误的基类的默认构造函数?
我们没有基类的无参数构造函数。基本上它相当于写:
class C extends A {
    C() {
        super();
    }
}
如果你理解为什么它不能编译,你就会理解为什么没有任何显式声明的构造函数的版本不能编译,因为它们是等价的。
  我误会了吗,还有什么是最好的解决方法
围绕什么?如果A不提供item. 如果它确实编译会很糟糕 - 那会item是什么?的每个实例C也可以被认为是一个A,这需要一个item...
您可以编写一个无参数构造函数,为超类构造函数提供某种默认值:
public C() {
    super("default item");
}
如果那是你想要的。但除此之外,如果不知道您要达到的目标,我们就无法真正提出替代方案。
请注意,继承远非实现代码重用的唯一方法——事实上,我个人更喜欢通过组合重用,而不是一般的继承。继承功能强大,但过度使用了 IMO。