Java:继承所有超类';默认情况下,使用s构造函数

Java:继承所有超类';默认情况下,使用s构造函数,java,inheritance,optimization,constructor,code-duplication,Java,Inheritance,Optimization,Constructor,Code Duplication,我只是Java的初学者 我的超类有几个构造函数: 公共类超类{ 受保护超类(){ //一些东西 } 受保护超类(a型){ //一些其他的东西 } 受保护超类(类型B){ //另一件事 } } 我想创建子类,但所有子类都只使用超类的所有超级构造函数和该类操作的一些特定构造函数。子类的示例: 公共类子类扩展超类{ 受保护子类(){ 超级(); //亚类物质 } 受保护子类(a型){ 超级(a型); //同样的子类东西 } 受保护子类(类型B){ 超级(B型); //同样的子类东西 } } Jav

我只是Java的初学者

我的超类有几个构造函数:

公共类超类{
受保护超类(){
//一些东西
}
受保护超类(a型){
//一些其他的东西
}
受保护超类(类型B){
//另一件事
}
}
我想创建子类,但所有子类都只使用超类的所有超级构造函数和该类操作的一些特定构造函数。子类的示例:

公共类子类扩展超类{
受保护子类(){
超级();
//亚类物质
}
受保护子类(a型){
超级(a型);
//同样的子类东西
}
受保护子类(类型B){
超级(B型);
//同样的子类东西
}
}
Java中是否存在继承所有超类构造函数的东西?因为我不想复制粘贴代码,但我想这样做:

@inheritsallconstructor
公共类子类扩展了超类{
{
//一些东西
}
}

还是有更合适的解决方案?

否,因为子类不必强制拥有与其超类相同的构造函数(它们可以拥有更多或更少的构造函数)

  • 超类没有显式构造函数:不强制子类有显式构造函数
  • 超类有一个显式构造函数:子类必须至少有一个构造函数。子类中的构造函数不必与超类中的构造函数匹配,但它应该使用
    super(…)
公共类超级{
公共超级(字符串值){
//...
}
}
子类应该提供一个调用
super(..)
的构造函数: 像这样:

私有类子类扩展超级{
公共子对象(字符串值){
超级(价值);
}
}
甚至这个:

私有类子类扩展超级{
公营分部(){
超级(“某些默认值”);
}
}
  • 超类有多个显式构造函数:子类被迫提供至少一个调用任何超类构造函数的构造函数:
公共类超级{
公共超级(字符串值){
//...
}
公共超级(int值){
//...
}
}
子类可以是以下任意一种:

私有类子类扩展超级{
公营分部(){
超级(“某些默认值”);
}
}
或:

私有类子类扩展超级{
公共子对象(字符串值){
超级(价值);
}
}
或:

私有类子类扩展超级{
公共子(int值){
super(intValue);
}
}

或者这些构造函数的任意组合。

构造函数不是继承的……不,这样的机制不存在。如果您使用IDE(如Eclipse),它可能有一个函数为您生成构造函数。假设没有“某些子类内容”在分配最终字段时,您可以将其移动到每个构造函数调用的私有方法。因此,要确认:如果我在
子类
中有一个最终字段,那么我别无选择,只能在
子类
中声明字段的位置对其进行初始化(在所有构造函数之外),B)将最终字段的初始化代码复制粘贴给所有构造函数,或C)找到一种方法,使用
this()
链接各种
子类
构造函数?