我有一个有很多__init__参数的基类:
def BaseClass(object):
    def __init__(self, a, b, c, d, e, f, ...):
        self._a=a+b
        self._b=b if b else a
        ...
所有继承类都应该运行__init__基类的方法.
我可以__init__()在每个将调用超类的继承类中编写一个方法__init__,但这将是一个严重的代码重复:
def A(BaseClass):
    def __init__(self, a, b, c, d, e, f, ...):
        super(A, self).__init__(a, b, c, d, e, f, ...)
def B(BaseClass):
    def __init__(self, a, b, c, d, e, f, ...):
        super(A, self).__init__(a, b, c, d, e, f, ...)
def C(BaseClass):
    def __init__(self, a, b, c, d, e, f, ...):
        super(A, self).__init__(a, …我想知道为什么javadoc不支持inheritedDoc是有正当理由的constructors.假设我有
class A
{
/**
 * Constructor of A
 */
A(){}   
/**
 * Does something
 */
public void method(){}
}
class B extends A
{
/**
 * {@inheritDoc}
 */
B(){ super();}
/**
 * {@inheritDoc}
 */
public void method(){}
}
对于该方法method,我可以继承javadoc,但为什么同样不能应用constructors?除非我使用inheritDoc标记,否则javadoc不会继承,这意味着我很清楚我想重用文档.什么应该阻止我这样做constructors?
我在Java中有以下示例类:
public class A { }
public class Super {
    protected Super() { }
    public Super(A a) { }
}
public class Sub extends Super { }
public class Consumer {
    public Consumer() {
        Sub sub = new Sub(new A()); //compiler error
    }
}
编译器错误表明参数不能应用于Sub中的默认构造函数,这是完全可以理解的.
我很好奇的是这个决定背后的理由.Java生成默认的空构造函数Sub; 为什么不能在这种情况下在幕后调用呢?这主要是理智的手持,还是有技术原因?
编辑
我知道的是这是一个语言的限制.我很好奇为什么它是一种语言限制.
编辑2
看起来,通常情况下,我太过接近我实际工作的代码,看看大局.我在下面的答案中发布了一个反例,说明了为什么这是BadThing®.
Java似乎与类构造函数和方法处理继承的方式不一致.
案例1 - 方法:
public class HelloWorld
{
  public static void main(String[] args)
  {
    Bee b = new Bee();
    b.foo();
  }
}
class Insect {
  public void foo() {
    this.bar();
    System.out.println("Insect foo");
  }
  public void bar() {
    System.out.println("Insect bar");
  }
}
class Bee extends Insect {
  @Override
  public void foo() {
    super.foo();
    System.out.println("Bee foo");
  }
  @Override
  public void bar() {
    System.out.println("Bee bar");
  }
}
上面的代码输出如下:
蜜蜂吧
昆虫foo
蜜蜂
请注意,在Insect的foo()方法中调用"this.bar()"实际上会返回并调用Bee的bar()方法(而不是调用Insect的bar()方法).
案例2 - 构造函数:
public class HelloWorld
{
  public static void main(String[] …我有一个Meeting类,我想创建一个扩展Meeting的BusinessMeeting类.
这是我的Meeting类:
public class Meeting {
private String name;
private String location;
private int start, stop;
public Meeting(String name, String location, int start, int stop) {
    this.name = name;
    this.location = location;
    this.start = start;
    this.stop = stop;
}
这是我的BusinessMeeting类:
public class BusinessMeeting extends Meeting {
    public BusinessMeeting() {
        super();
    }
}
在我的BusinessMeeting类中,我收到错误:
构造函数类会议中的会议不能应用于给定类型; required:String,String,int,int found:无参数
我不确定为什么我收到该错误消息.BusinessMeeting类不应该继承Meeting类中的所有变量吗?
我一直在使用Eclipse Juno学习继承中的构造函数.
当我在childClass中按两次ctrl + O时,它显示继承的成员.但我碰巧在继承的成员中甚至看到超类的构造函数
但据说构造函数不是继承的......
有人可以解释一下这种行为吗?
每当在任何派生类中调用任何构造函数时,任务只能通过最终隐式或显式地调用基类构造函数来完成(如果我在这里错了,请纠正我).
因为我们打算创建派生类的实例,但是因为最后调用了基类构造函数.
那么,尽管调用了基类的构造函数,如何构造派生类的实例?
如果我有这个抽象类:
package com.abc;
public abstract class Player {
    private String name;
    public Player(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
}
当我从抽象类中扩展一个新类时,新类默认使用继承的构造函数,还是必须创建一个调用"super"的构造函数?