НЕТ, поскольку подклассы не обязаны иметь те же конструкторы, что и их суперклассы (они могут иметь больше или меньше конструкторов).
- Суперкласс не имеет явных конструкторов : Подклассыне обязательно иметь явный конструктор.
- У суперкласса есть один явный конструктор : у подклассов должен быть хотя бы один конструктор.Конструктор в подклассе не должен совпадать с конструктором в суперклассе, но он должен вызывать его, используя
super(...)
public class Super {
public Super(String value) {
//...
}
}
Подклассы должны предоставлять конструктор, который вызывает super(..)
: Вот так:
private class Sub extends Super {
public Sub(String value) {
super(value);
}
}
Или даже так:
private class Sub extends Super {
public Sub() {
super("some default value");
}
}
- Суперкласс имеет более одного явного конструктора : подклассы вынуждены предоставлять хотя бы один конструктор, который вызываетлюбой из конструкторов суперкласса:
public class Super {
public Super(String value) {
//...
}
public Super(int intValue) {
//...
}
}
Подклассами могут быть любые из следующих:
private class Sub extends Super {
public Sub() {
super("some default value");
}
}
Или:
private class Sub extends Super {
public Sub(String value) {
super(value);
}
}
Или:
private class Sub extends Super {
public Sub(int intValue) {
super(intValue);
}
}
Или любая комбинация этих конструкторов.